第10回 課題

  
課題1
    
下図のように、3個ごと(左から3の倍数の位置)にそれ以外を描きなさい。
 
 ※以下の□と〇を描画するプログラムを参考に考えること。
  
 □を16個描画するプログラム
size(512,200);

for(int i=0; i<16; i++){ // 図形を16個描画する
  rect( i*32+16-15, 100-15, 30, 30 ); // □の描画
}

  <実行結果>
  
  
 〇を16個描画するプログラム
size(512,200);

for(int i=0; i<16; i++){ // 図形を16個描画する
  ellipse( i*32+16,100, 32,32 ); // 〇の描画
}

  <実行結果>
  
 
 
  
課題2
    
以下は、16本の線分を描画するプログラムである。
size(400,400);
background(255);
strokeWeight(2); // 描画する線の太さ

for(int i=0; i<16; i++){ // 16回繰り返す
  stroke(0,0,0); // 黒色
  line( i*26.7,0, (15-i)*26.7,399 ); // 線分を描画
}

 <実行結果>
  
  
このプログラムを下図のように青色赤色で半分ずつになるように修正しなさい。
青色stroke(0,0,255);赤色stroke(255,0,0); で指定する。
  

 
  
課題3
    
<演習3>のプログラムを修正して、下図のように描画しなさい。
  
  
 
  
課題4
    
下図の描画をしなさい。
線と線の交点は長い方の線の中点として、線の本数は全部で10本である。
for文を使うこと。
  
  
   
  
課題5(やや難)
    
以下は、正三角形を描画するプログラムである。
size(450, 450);
background(255);

float r = 100; // 半径
float x1,y1,x2,y2,x3,y3;
float cx = 450/2; // 中心座標
float cy = 450/2;
float rad1,rad2,rad3;

// 円周上の頂点座標の角度を計算、ラジアン度数に変換
rad1 = ((float)0/3)*2.0*PI - PI/2; // 上側の頂点位置
rad2 = ((float)1/3)*2.0*PI - PI/2; // 右側の頂点位置
rad3 = ((float)2/3)*2.0*PI - PI/2; // 左側の頂点位置
// 頂点座標の計算
x1 = r*cos(rad1) + cx; // 上側頂点の座標
y1 = r*sin(rad1) + cy;
x2 = r*cos(rad2) + cx; // 右側頂点の座標
y2 = r*sin(rad2) + cy;
x3 = r*cos(rad3) + cx; // 左側頂点の座標
y3 = r*sin(rad3) + cy;
// 3辺の描画
line( x1,y1, x2,y2 ); // 上<-->右 の辺 \
line( x2,y2, x3,y3 ); // 右<-->左 の辺 ー
line( x3,y3, x1,y1 ); // 左<-->上 の辺 /

 <実行結果>
  
  
このプログラムを参考にして、下図のように正三角形〜正11角形を3x3の配置で描画しなさい。
ウィンドウのサイズは 450x450 とする。
  
  
 
    

課題の提出について

課題1〜5のプログラムソースを1個のテキストファイルWordではないので注意)にコピペして、そのテキストファイルをCerezoから提出しなさい。
ファイル名は他の人と重複しないように

   [自分の学籍番号]+"_kadai10.txt"  (例: "5412016_kadai10.txt" など

のようにすること。
なお、実行結果の画像は提出しなくてよい

提出先はCerezoの ICT演習、第10回課題 
 
 
<提出するテキストファイルの作成例>
第10回 課題の回答  5412099 福山太郎

- 課題1 -----------------------------------------
size( 400, 400 );
background(255);
 
for(int i=0;i<20;i++){
  for(int j=0;j<20;j++){
    if( (i+j) / 2 == 0 ){
      fill( 0 ); // 黒色
    }else{
      fill(255); // 白色
    }
    ellipse( i*20 + 10, j*20 + 10, 18, 18 );
  }
}



- 課題2 -----------------------------------------
size( 480, 120 );

ellipse( 160, 60, 100, 100 ); // 左側に円を描画
smooth(); // 線が滑らかになる
ellipse( 300, 60, 100, 100 ); // 右側に円を描画

      :

- 課題3 -----------------------------------------
      :
      :