LAST UPDATE 1998/08/22


『 その10-6 』




 ■ 三角関数(sin, cos)

 これを読んでいやな気持ちになった人がたくさんいると思う。しかしこれも避けては通れない。でも安心してほしい。必要最低限の事しか説明しないので、実はそんなに難しくはない。
 ではまず下の図を見てほしい。
pic10_3.gif
 あなたがよほど数学の授業をサポッていたとしてもこの図には見覚えがあるはず。それから3辺の長さの比率が
pic10_4.gif
であることは知っていると思う。それと同時に
pic10_5.gif
というのも見たことがあると思うし、それから
pic10_6.gif
というのも知っているような気がするであろう。別に知らなくても良い。上に示したのはただの決まりである。知らなかった人や忘れていた人は「そういうものだ」と今覚えてほしい。
 3角形を半径1の円の中に収めてみると下のようになったりする。
pic10_3.gif
 ということで、三角関数というのは、半径1の円の外周に中心から線を引いたときの、縦の長さ(a)と横の長さ(c)を求めることのできる関数だったりしたわけだ。
 今回扱っているベクトルは横軸がXで縦軸がZだから、X成分を求めるにはcos関数を使いZ成分を求めるにはsin関数を使えば良いことになる。
 「成分を求めてどうするの?」という疑問もあると思うが、それはボールが進む速度を一定に保つためである。
 例えば真上に動いていたとする。その時はvx=0でvz=-1だ。ボールの速度を5とすると位置の計算は

    px=px+5*0
    pz=pz+5*(-1)
で計算される。この場合は真上に動いているからvx=0, vz=-1が簡単に得られるため問題ないが、では左側に20°傾いた方向へボールが進んでいたとした場合はどう計算すれば良いのかという話になる。そこで必要なのが三角関数なのだ。角度は真上を90と考えそこから左に20°なので110として計算し、Z座標系は上が負(マイナス)なので符号を逆転するために-1を掛けてやる。
    vx=cos(110)=-0.34
    vz=-sin(110)=-0.94
それで、ボールの座標計算は
    px=px+5*(-0.34)
    pz=pz+5*(-0.94)
で計算されるわけである。こうやって計算された結果では進む角度によってスピードが違うように見えるという症状は起きない。なんと三角関数というのは便利なのであろう。







その 10 -1 | その 10-2 | その 10-3 | その 10-4 | その 10-5 | その 10-6 | その 10-7

『 サルのゲーム製作講座 』 目次 | その 1 | その 2 | その 3 | その 4 |
その 5 | その 6 | その 7 | その 8 | その 9 | その 10 | その 11


もどる

e-mail: sc_3da@magical2.egg.or.jp