CGプログラミング論 平成28年5月18日 森田 彦
基礎課題3-1 i=1のとき x=10+9*w i=2のとき x=10+8*w となるためには・・・ i=3のとき x=10+7*w void DrawGraphics(Graphics g) { int x,y,w,h; w=15; //マスの横幅 h=15; //マスの高さ g.setColor(Color.red); //描画色を赤色に指定 for (int i=1; i<=10; i++) { //行方向の繰り返し x= 10+(10-i)*w ; //次行のマスの描画開始位置 y=10+(i-1)*h; //描画位置を下にhだけずらす for (int j=1; j<=2*i-1; j++) { //列方向の繰り返し g.drawRect(x,y,w,h); //マスを描く x=x+w; //描画位置を右にwだけずらす } C 10+(10-i)*w ① i=1のとき x=10+9*w i=2のとき x=10+8*w となるためには・・・ i=3のとき x=10+7*w
基礎課題3-2 int x,y,w,h; w=15; //マスの横幅 h=15; //マスの高さ void DrawGraphics(Graphics g) { int x,y,w,h; w=15; //マスの横幅 h=15; //マスの高さ for (int i=1; i<=10; i++) { //行方向の繰り返し x=10+(10-i)*w; y=10+(i-1)*h; for (int j=1; j<=2*i-1; j++) { //列方向の繰り返し if( j==1 || j==2*i-1 ) { g.setColor(Color.red); //描画色を赤色に指定 g.fillRect(x,y,w,h); //マス内を塗りつぶす g.setColor(Color.black); //マスの外枠の描画色を黒色に指定 g.drawRect(x,y,w,h); //マス(の外枠)を描く } x=x+w; //描画位置を右にwだけずらす } j==1 || j==2*i-1 ①
基礎課題3-3 i=10のとき x=10+0*w i= 9のとき x=10+1*w となるためには・・・ i= 8のとき x=10+2*w ① void DrawGraphics(Graphics g) { int x,y,w,h; w=15; //マスの横幅 h=15; //マスの高さ for (int i=10; i>=1 ; i--) { //行方向の繰り返し x= 10+(10-i)*w ; y=10+(10-i)*h; for (int j=1; j<=2*i-1; j++) { //列方向の繰り返し g.setColor(Color.red); //描画色を赤色に指定 g.fillRect(x,y,w,h); //マス内を塗りつぶす g.setColor(Color.black); //マスの外枠の描画色を黒色に指定 g.drawRect(x,y,w,h); //マス(の外枠)を描く x=x+w; //描画位置を右にwだけずらす } A 10+(10-i)*w ① i=10のとき x=10+0*w i= 9のとき x=10+1*w となるためには・・・ i= 8のとき x=10+2*w
基礎課題3-4 i=1のとき 19 i=2のとき 17 マスの個数 i=3のとき 15 となるためには・・・ C 2*(11-i)-1 ① void DrawGraphics(Graphics g) { int x,y,w,h; w=15; //マスの横幅 h=15; //マスの高さ for (int i=1; i<=10 ; i++) { //行方向の繰り返し x=10+(i-1)*w; y=10+(i-1)*h; for (int j=1;j<= 2*(11-i)-1 ; j++) { //列方向の繰り返し g.setColor(Color.red); //描画色を赤色に指定 g.fillRect(x,y,w,h); //マス内を塗りつぶす g.setColor(Color.black); //マスの外枠の描画色を黒色に指定 g.drawRect(x,y,w,h); //マス(の外枠)を描く x=x+w; //描画位置を右にwだけずらす } C 2*(11-i)-1 ① i=1のとき 19 i=2のとき 17 マスの個数 i=3のとき 15 となるためには・・・
応用課題3-A(その1) for (int i=1; i<=19; i++) { if(i<=9) { x= 10+(10-i)*w ; } else { x= 10+(i-10)*w ; y=10+(i-1)*h; ・・・ 10+(10-i)*w ① 10+(i-10)*w ② A
応用課題3-A(その2) if(i>=11) { jMax= 2*(20-i)-1 ; } else { jMax= 2*i-1; ③ B
応用課題3-A(その3) ④ for (int j=1; j<=jMax; j++) { //列方向の繰り返し if( j==1 || j==jMax ) { g.setColor(Color.red); g.fillRect(x,y,w,h); g.setColor(Color.black); g.drawRect(x,y,w,h); } x=x+w; ・・・ j==1 || j==jMax ④
本日の学習内容 グラフの描画 提出課題 【基礎課題4-1】~【基礎課題4-4】および【応用課題4-A】、【応用課題4-B】の6題です。
演習課題の受け取りについて 原則として講義時間内に提出してもらいます。提出が遅れた場合は以下のように減点とします。 基礎課題 応用課題 100% 終了後1時間以内 90% 1時間超~当日中 70% 翌日の17:00まで 0% それ以上の遅れ 課題内容によっては、上の基準を緩和します。その際は講義時にアナウンスします。
基礎課題4-1 y0-100 y0-150 y0=200; //グラフの原点のy座標 ① ② x軸 y軸 100 25 (0,0) x0 y0 (x0,y0) 線分1 線分2 線分3 <コンピュータ上の座標> (x0+100,y0-50) グラフのx座標 グラフのy座標 void DrawGraphics(Graphics g) { int x0,y0,lx,ly; lx=200; //x軸の長さ ly=180; //y軸の長さ x0=10; //グラフの原点のx座標 y0=200; //グラフの原点のy座標 g.setColor(Color.black); //軸の描画色を黒色に指定 g.drawLine(x0,y0,x0+lx,y0); //x軸の描画 g.drawLine(x0,y0,x0,y0-ly); //y軸の描画 g.setColor(Color.blue); //グラフの描画色を青色に指定 g.drawLine(x0,y0,x0+100, y0-50 ) ; //線分1の描画 g.drawLine(x0+100,y0-50,x0+150, y0-100 ); //線分2の描画 g.drawLine(x0+150,y0-100,x0+175, y0-150 ); //線分3の描画 } y0-100 ① y0-150 ②
基礎課題4-2 y1+50 void DrawGraphics(Graphics g) { int x0,y0,lx,ly,x1,y1,x2,y2; lx=200; //x軸の長さ ・・・ g.setColor(Color.blue); //グラフの描画色を青色に指定 //グラフの描画 int wx=100; //x軸方向の移動幅の設定 x1=0; //最初の始点のx座標の設定 y1=0; //最初の始点のy座標の設定 for(int i=1;i<=3;i++) { x2=x1+wx; //終点のx座標の設定 y2= y1+50 ; //終点のy座標の設定 g.drawLine(x0+x1,y0-y1,x0+x2,y0-y2); x1=x2; //次の始点のx座標の設定 y1=y2; //次の始点のy座標の設定 wx=wx/2; //次のx軸方向の移動幅の設定 } y1+50 ①
基礎課題4-3 y=x2 (0≦x≦10) i<=10 ・・・ //グラフの描画 int wx=1; x1=0; y1=0; for(int i=1; i<=10 ;i++) { x2=i*wx; y2=x2*x2; g.drawLine(x0+20*x1,y0-2*y1,x0+20*x2,y0-2*y2); x1=x2; y1=y2; } ① i<=10
基礎課題4-4 y=x2 (0≦x≦1) i<=10 void DrawGraphics(Graphics g) { int x0,y0,lx,ly; double x1,y1,x2,y2; //一般的には座標値は実数型で表す lx=200; //x軸の長さ ・・・ //グラフの描画 double wx=0.1; //x軸方向の刻み幅も一般には実数型変数で表す。 x1=0; y1=0; for(int i=1; i<=10 ;i++) { x2=i*wx; y2=x2*x2; g.drawLine( x0+(int)(100*x1),y0-(int)(100*y1), x0+(int)(100*x2),y0-(int)(100*y2) ); x1=x2; y1=y2; } y=x2 (0≦x≦1) ① i<=10