CGプログラミング論 平成28年6月1日 森田 彦 基礎課題5-1 解答(その1) 30° 2 3 60° 1 45° 1 1 cos(60°)=1/2 cos(30°)= 2 3②/ 2 cos(45°)= 1 /④ 2 sin(60°)= 3①/ 2 ③ sin(30°)= 1/2 sin(45°)= 1 / 2 基礎課題5-1 解答(その2) θ(ラジアン)=(θ(角度)/180)×π 45° → 60° → ⑤ π/4 ⑥ π/3 (ラジアン) (ラジアン) 基礎課題5-2 y 描画開始点 void DrawGraphics(Graphics g) { int x0,y0,r; x x0=110; //円の中心のx座標 r y0=110; //円の中心のy座標 r=100; //円の半径 g.setColor(Color.blue); //グラフの描画色を青色に指定 //円の描画 double x1,x2,y1,y2,theta,d_theta; int Cx=1,Cy=1; //x軸方向、y軸方向の縮尺 int N=8; //円の分割数 x1= r ① r ; //描画開始点のx座標 y1=0; //描画開始点のy座標 d_theta=(2*Math.PI/N); //角度θの刻み幅 for(int i=1;i<=N;i++) { theta=d_theta*i; //i番目の点の角度θ ・・・ } } 基礎課題5-3 void DrawGraphics(Graphics g) { int x0,y0,r; x0=110; //円の中心のx座標 ・・・ for(int i=1;i<=N;i++) { theta=d_theta*i; //i番目の点の角度θ x2=r*Math.cos(theta); //i番目の点のx座標 y2=r*Math.sin(theta); //i番目の点のy座標 (i%2)==0 ① if( (i%2)==0 ) { g.drawLine( x0+(int) (Cx*x1), y0-(int)(Cy*y1) ,x0+(int) (Cx*x2), y0-(int)(Cy*y2)); } x1=x2; y1=y2; } } 基礎課題5-4 void DrawGraphics(Graphics g) { int x0,y0,r; x0=110; //円の中心のx座標 ・・・ for(int i=1;i<=N;i++) { theta=d_theta*i; //i番目の点の角度θ x2=r*Math.cos(theta); //i番目の点のx座標 y2=r*Math.sin(theta); //i番目の点のy座標 g.drawLine( x0+(int) (Cx*x1), y0-(int)(Cy*y1) ,x0+(int) (Cx*x2), y0-(int)(Cy*y2)); x0+(int)(Cx*x2) g.drawLine(x0,y0, x0+(int) ); ① (Cx*x2) , y0-(int)(Cy*y2) ② x1=x2; y1=y2; x0+(int)(Cx*x1) y0-(int)(Cy*y1) も可 } } 基礎課題5-5 3 2 1 0 void DrawGraphics(Graphics g) { ・・・ for(int i=1;i<=N;i++) { theta=d_theta*i; //i番目の点の角度θ x2=r*Math.cos(theta); //i番目の点のx座標 y2=r*Math.sin(theta); //i番目の点のy座標 (i%2) ① == 0 if( ) { g.drawLine( x0+(int) (Cx*x1), y0-(int)(Cy*y1) ,x0+(int) (Cx*x2), y0-(int)(Cy*y2)); } g.drawLine(x0,y0, x0+(int) (Cx*x2) , y0-(int)(Cy*y2) ); x1=x2; y1=y2; } } 応用課題5-A void DrawGraphics(Graphics g) { int x0,y0; double r; //半径rを実数型にする ・・・ int N=100; //円の分割数 x1=r; //描画開始点のx座標 y1=0; //描画開始点のy座標 d_theta=(2*Math.PI/N); d_theta=( 4*Math.PI/N); //角度θの刻み幅 for(int i=1;i<=N;i++) { theta=d_theta*i; //i番目の点の角度θ r=10*theta; //角度θの時のr x2=r*Math.cos(theta); //i番目の点のx座標 y2=r*Math.sin(theta); //i番目の点のy座標 g.drawLine( x0+(int) (Cx*x1), y0-(int)(Cy*y1) ,x0+(int) (Cx*x2), y0-(int)(Cy*y2)); x1=x2; y1=y2; } } 応用課題5-A void DrawGraphics(Graphics g) { int x0,y0; double r; //半径rを実数型にする ・・・ int N=100; //円の分割数 x1=r; //描画開始点のx座標 y1=0; //描画開始点のy座標 d_theta=(2*Math.PI/N); //角度θの刻み幅 for(int i=1;i<=2*N;i++) { これも可 theta=d_theta*i; //i番目の点の角度θ r=10*theta; //角度θの時のr x2=r*Math.cos(theta); //i番目の点のx座標 y2=r*Math.sin(theta); //i番目の点のy座標 g.drawLine( x0+(int) (Cx*x1), y0-(int)(Cy*y1) ,x0+(int) (Cx*x2), y0-(int)(Cy*y2)); x1=x2; y1=y2; } } 本日の学習内容 図形の移動 提出課題 【基礎課題6-1】~【基礎課題6-6】および【応 用演習課題6-A】の7題です。 【基礎課題6-6】の提出期限は【応用課題6A】と同様に、6/2(木)17:00までとします。 演習課題の受け取りについて 原則として講義時間内に提出してもらいます。提出 が遅れた場合は以下のように減点とします。 基礎課題 応用課題 講義時間内 終了後1時間以内 100% 90% 100% 100% 1時間超~当日中 70% 100% 翌日の17:00まで 0% 100% それ以上の遅れ 0% 0% 課題内容によっては、上の基準を緩和します。その際は講義 時にアナウンスします。
© Copyright 2024 ExpyDoc