CGプログラミング論 平成27年6月3日 森田 彦 基礎課題6-1 void DrawGraphics(Graphics g) { int[] x={0,30,30,0,-30,-30}; //多角形のx座標の定義 int[] y={0,30,90,60,90,30}; //多角形のy座標の定義 int N=6; //データ数(多角形の頂点の数) int x0=100; //原点のx座標(コンピュータ上) int y0=200; //原点のy座標(コンピュータ上) int[] xp=new int[N]; //コンピュータ上のx座標を格納する配列 int[] yp=new int[N]; //コンピュータ上のy座標を格納する配列 g.setColor(Color.BLUE); //描画色を青に設定 for(int i=0; i<N; i++) { xp[i]= x0+x[i] ; ① yp[i]= y0-y[i] y0-y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 } 基礎課題6-2 void DrawGraphics(Graphics g) { int[] x={0,30,30,0,-30,-30}; //多角形のx座標の定義 ・・・ for(int i=0; i<N; i++) { xp[i]= x0+x[i] ; yp[i]= y0-y[i] ; } 追加部分 g.drawPolygon(xp,yp,N); //多角形を描画 //x軸対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0+x[i] ; yp[i]= y0-y[i] y0+①y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 } 基礎課題6-3 void DrawGraphics(Graphics g) { int[] x={0,30,90,60,90,30}; //多角形のx座標の定義 int[] y={0,-30,-30,0,30,30}; //多角形のy座標の定義 int N=6; //データ数(多角形の頂点の数) ・・・ //図形(多角形)の描画 for(int i=0; i<N; i++) { xp[i]= x0+x[i] ; yp[i]= y0-y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 //y軸対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0 x0-x[i] -① x[i] ; yp[i]= y0 y0-y[i] -② y[i] ; 今の場合、図形の対称性から 「y0+y[i]」でも同じ結果になるが、 一般には「y0-y[i]」が正しい。 } g.drawPolygon(xp,yp,N); //多角形を描画 } 基礎課題6-4 void DrawGraphics(Graphics g) { int[] x={0,30,30,0}; //多角形のx座標の定義 int[] y={0,30,90,60}; //多角形のy座標の定義 int N=4; //データ数(多角形の頂点の数) ・・・ //図形(多角形)の描画 for(int i=0; i<N; i++) { xp[i]=x0+x[i]; yp[i]=y0-y[i]; } g.drawPolygon(xp,yp,N); //多角形を描画 //原点対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0 x0-x[i] -①x[i] ; yp[i]= y0 y0+y[i] +②y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 } 基礎課題6-5 void DrawGraphics(Graphics g) { ・・・ //x軸対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0 x0+x[i] +① x[i] ; yp[i]= y0 y0+y[i] +② y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 //y軸対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0-x[i] x0-③ x[i] ; yp[i]= y0-y[i] y0-④ y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 //原点対称な図形の描画 for(int i=0; i<N; i++) { xp[i]= x0-x[i] x0-⑤ x[i] ; yp[i]= y0+y[i] y0+⑥ y[i] ; } g.drawPolygon(xp,yp,N); //多角形を描画 } 基礎課題6-6 void DrawGraphics(Graphics g) { ・・・ //図形(多角形)の描画 double x_rot,y_rot,theta,d_theta; 2*Math.PI/4 ① d_theta= 2*Math.PI/4 ; //角度θの刻み幅 for(int j=0;j<4;j++) { //4つの三角形を繰り返し処理で描画 theta=d_theta*j; //角度θ for(int i=0; i<N; i++) { ・・・ } g.drawPolygon(xp,yp,N); //多角形を描画 } } 応用課題6-A(その1) void DrawGraphics(Graphics g) { ・・・ //図形(多角形)の描画 double x_rot,y_rot,theta,d_theta; 2*Math.PI/12 ① d_theta= 2*Math.PI/12 ; //角度θの刻み幅 for(int j=0;j<12;j++) { theta=d_theta*j; //角度θ for(int i=0; i<N; i++) { x_rot=x[i]*Math.cos(theta)-y[i]*Math.sin(theta); y_rot=x[i]*Math.sin(theta)+y[i]*Math.cos(theta); xp[i]=x0+(int) (x_rot); yp[i]=y0-(int) (y_rot); } g.drawPolygon(xp,yp,N); //多角形を描画 } } ② 応用課題6-A(その2) void DrawGraphics(Graphics g) { ・・・ //図形(多角形)の描画 double x_rot,y_rot,theta,d_theta; d_theta= 2*Math.PI/12 ; //角度θの刻み幅 for(int j=0;j<12;j++) { theta=d_theta*j; //角度θ for(int i=0; i<N; i++) { ・・・ } ② g.setColor(Color.blue); //塗る色を青に設定 g.fillPolygon(xp,yp,N); //多角形を描画(塗りつぶし) g.setColor(Color.black); //輪郭を描く色を黒に設定 g.drawPolygon(xp,yp,N); //多角形を描画 } } 本日の学習内容 グラデーション 提出課題 【基礎課題7-1】~【基礎課題7-3】および【応 用課題7-A】の4題です。 演習課題の受け取りについて 原則として講義時間内に提出してもらいます。提出 が遅れた場合は以下のように減点とします。 基礎課題 応用課題 講義時間内 終了後1時間以内 100% 90% 100% 100% 1時間超~当日中 70% 100% 翌日の17:00まで 0% 100% それ以上の遅れ 0% 0% 課題内容によっては、上の基準を緩和します。その際は講義 時にアナウンスします。
© Copyright 2024 ExpyDoc