スライド

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%
課題内容によっては、上の基準を緩和します。その際は講義
時にアナウンスします。