ページ 11

3Dプログラミングでのカメラの回転について

Posted: 2014年8月05日(火) 22:35
by kar
いつもお世話になっております。
今私は3Dプログラミングに興味を持ち、http://dixq.net/g/の3Dプログラミング入門から勉強を始めたのですが疑問に思った事があります

「カメラを回転してみよう」http://dixq.net/g/3d_02.htmlの座標の回転の所なのですが

コード:

// (x,y)の点を(mx,my)を中心にang角回転する
void rotate(float *x, float *y, const float ang, const float mx, const float my){
    const float ox = *x-mx, oy = *y-my;
    *x =  ox * cos(ang) + oy * sin(ang);
    *y = -ox * sin(ang) + oy * cos(ang);
    *x += mx;
    *y += my;
}
このプログラムがよく分かりません。同ページ内の解説サイトhttp://www.geisya.or.jp/~mwm48961/kou2/linear_ ... した後のx、y座標は
x=xcosθ-ysinθ
y=xsinθ+ycosθ
で求められると書いてあるのですが上記のプログラムでは符号が逆になっています。
これは何か意図して書かれているのでしょうか?それとも単純に私が何か勘違いをしてしまっているのでしょうか?
うまく理解することが出来なかったので質問させて頂きました。よろしくお願いします。

Re: 3Dプログラミングでのカメラの回転について

Posted: 2014年8月05日(火) 23:29
by h2so5
回転方向を逆転させているだけです。パラメータの方を反転させればいいだけなので式としてはあんまり意味はないですね。

画像

Re: 3Dプログラミングでのカメラの回転について

Posted: 2014年8月06日(水) 06:16
by kar
成る程そういう事だったんですか。詳しい説明ありがとうございました。

Re: 3Dプログラミングでのカメラの回転について

Posted: 2014年8月06日(水) 09:43
by usao
オフトピック
こういう関数を書いたときには
>// (x,y)の点を(mx,my)を中心にang角回転する
みたいな曖昧なコメント書くのは避けたいですね.個人的な感覚ですが,
・角度の単位は[rad]なのか[deg]なのか
・+の角度を指定したらどっち側に回転するのか
といったことくらいは書いとかないと使えないだろ…とか思う.