第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 );
  }
}