ワークシートダウンロード

5-3 カメラが円を描いて移動する理由を考えよう
授業で書いたコードの意味について、ゆっくり考えていこう。
そうすれば、カメラがダンサーの周りをぐるぐると回転している理由を考えていこう!
【1,2行目について】
float c = cos(radians(60)* frameCount / 40.f);
float s = sin(radians(60)* frameCount / 40.f);
プログラミングでは、「=」は「等しい」という意味ではなく、右の値を左の値に「代入」するという意味です。
1行目は「c」にcosΘを、2行目は「s」にsinΘの関数を代入しています。
Θは「radians(60)*
c = cosΘ , s = sinΘ
frameCount/40.f」の
という意味!
ことです。frameCountは「フ
レーム番号」という意味で、1秒
Θは1秒間にradians(60)だけ増えるので、秒速60度で回転することになります。
に値が40ずつ増えます。
このradians()の中の値を変更すれば、回転の秒速を変更することができるのです。
【3行目について】
最初の3つの要素はカメラのxyz座標を決めています。次の3つの要素はカメラが向くxyz座標を決めています。
camera(c*300.f, -100.f, s*300.f, 0, -100, 0, 0, 1, 0);
カメラの位置
(xyz座標)
カメラの向き
(xyz座標)
呪文のようなもの
カメラの位置
(x,y,z) = (c*300.f, -100.f, s*300.f)
カメラの向き
(x,y,z) = (0, -100, 0)
「.f」というのは、「float型だよ」という意味なので、カメラの位置はx座標は「300cosΘ」、z座標は「300sinΘ」
と考えることができます。
カメラの位置
(x,y,z) = (300cosΘ, -100, 300sinΘ)
カメラの向き
(x,y,z) = (0, -100, 0)
という意味!
今回は、高さとなるy座標は、カメラの位置も向きも「-100」に固定されています。この値を調節することで
「カメラの高さ」や「カメラが見ている位置の高さ」を調節することができます。気になる人は自分で値を
変えて試してみましょう。
y座標については考えたので、次に、x座標とz座標についてのみ考えていきます。
年 組 番
【3行目について】 xz座標平面の動きについて
カメラの位置
(x,z) = (300cosΘ, 300sinΘ)
カメラの向き
(x,z) = (0, 0)
カメラは常に中心(0,0)の方を向きながら、半径300の円の上を反時計周りで回っていく事を意味しています。
5秒で1周のペースでカメラは回っていきます。
300
カメラの位置
(300cosΘ,300sinΘ)
Θ=1/2π…の時
カメラの向き
(0,0)
Θ=π…の時
Θ
300
Θ=0 , 2π…の時
300
Θ=3/2π…の時
300
camera(c*300.f, -100.f, s*300.f, 0, -100, 0, 0, 1, 0);
カメラの位置(xyz座標)
もっと遠くから(or近くから)みてるようにするにはカメラの位置をどのように変えてみたらいいでしょうか?
考えてみましょう!
(ヒント:遠くするにはカメラの通る円の半径を大きくすればいい)