//yan's Diary: 新Macのプログラミング入門 その8 新Macのプログラミング入門 その8 | yan's Diary

2011/01/09

新Macのプログラミング入門 その8

半年振りの「新Macのプログラミング入門」です。正月明けの三連休で、風邪が治りきらず外に出る気にならないため、久しぶりにやってみます。

やはり教科書は”ヒンギス本”です。17章P256のチャレンジ問題に挑戦しましょう。教科書通りにプログラムすると下の図のような結果が得られます。

教科書どおり

チャレンジ問題では「この(ランダムな)直線を曲線に置き換えてください。」というものなので、こんなふうにしてみました。

曲線に換えてみた

以下に.mファイルを示します。線を描く部分の抜粋です。
”//”でコメントアウトしてある部分は、教科書通りにランダムな直線を描くループになっていまして、その下のループの部分が曲線を描く様に変更(追加)したところです。

- (id)initWithFrame:(NSRect)rect {
if (![super initWithFrame:rect]) {
return nil;
}
srandom(time(NULL));

path = [[NSBezierPath alloc] init];
[path setLineWidth:3.0];
NSPoint p = [self randomPoint];
[path moveToPoint:p];
int i;  
//for (i = 0 ; i <15 ; i++) {   ・・・教科書どおりの直線を描くループ
//p =[self randomPoint];    
//[path lineToPoint:p];     
//}             ・・・ループ終了         


for (i = 0; i <15 ; i++) {   ・・・チャレンジ問題の曲線を作るループ
NSPoint q = [self randomPoint];     
NSPoint r = [self randomPoint];     
NSPoint s = [self randomPoint];     
[path curveToPoint:q controlPoint1:r controlPoint2:s]; ・・・曲線を書くメソッド
}
・・・ループ終了     
[path closePath];
return self;
}
}

ベジェ曲線を描く”curveToPoint: contorolPoint1: conrolPoint2:”というメソッドが見つかれば、後は試行錯誤でなんとかなりますので、そんなに難しくなかったですかね。
 
 

0 件のコメント:

↑ このページの先頭へ