第10回 課題の模範解答 |
課題の模範解答です。 |
課題1 |
3個ごと(左から3の倍数の位置)に□、それ以外は〇を描く |
size(512,200); for(int i=0; i<16; i++){ // 図形を16個描画する if( i%3==2 ){ rect( i*32+16-15, 100-15, 30, 30 ); // □の描画 }else{ ellipse( i*32+16,100, 32,32 ); // 〇の描画 } } |
課題2 |
16本の線分を 青色、赤色を半分ずつにしなさい |
size(400,400); background(255); strokeWeight(2); // 描画する線の太さ for(int i=0; i<16; i++){ // 16回繰り返す if( i<8 ){ stroke(0,0,255); // 青色 }else{ stroke(255,0,0); // 赤色 } line( i*26.7,0, (15-i)*26.7,399 ); // 線分を描画 } |
課題3 |
10x10個の〇を描くプログラム(<演習3>)から、◣のような形になるようにしなさい |
size(400,400); background(255); for(int i=0; i<10; i++){ for(int j=0; j<i+1; j++){ ellipse( j*40+20, i*40+20, 40, 40 ); // 〇を描画 } } |
課題4 |
線と線の交点は長い方の線の中点として線を10本描画する、for文を使う |
size(400,400); background(255); int w = 400; for(int i=0; i<5; i++){ line( 0, w/2, w, w/2); // ヨコのライン w = w/2; line( w, 0, w, w); // タテのライン } |
課題5 |
正三角形~正11角形を描画しなさい |
size(450, 450); background(255); float r = 70; // 半径 float x1,y1,x2,y2; float cx,cy; // 中心座標 float rad1,rad2; // 円周上の頂点座標の角度 for(int i=0;i<9;i++){ cx = (i%3)*150 + 75; //n角形の中心座標 cy = (i/3)*150 + 75; int n = i+3;//頂点の個数 for(int j=0;j<n;j++){ rad1 = ((float)j/n)*2.0*PI - PI/2; rad2 = ((float)(j+1)/n)*2.0*PI - PI/2; // 1辺の端点の2座標の計算 x1 = r*cos(rad1) + cx; y1 = r*sin(rad1) + cy; x2 = r*cos(rad2) + cx; y2 = r*sin(rad2) + cy; line( x1,y1, x2,y2 ); } } |