RSS

 

RSS


ヤカンを眺めるにあたって、上、下、左、右の4つの回転オペレーションをサポートしたい。

今回はオイラー角で作って失敗の例をもう少し詳しく。

//  以下のコードは意味を表したもの

class Yakan
{
  float ex;
  float ey;
};

//  毎アプリループに値は累積
operation()
{
  const float32 C=一定の値;
  switch(OPE){
    case 上: ex -= C;  break;
    case 下: ex += C;  break;
    case 左: ey -= C;  break;
    case 右: ey += C;  break; 
   }
}

//  毎回 オイラー角 ex ey  で表示
draw()
{
  // まっすぐ正面のヤカン
     //  * は行列の演算
     MATRIX mat = Get正面mat() * rotate_x(ex) * rotate_y(ey);
  drawobj(ヤカン,mat);
}

 上記のようなコードを書いた場合、exのみや、eyのみ動かした場合だけ、思った動きになる。両方を動かしたときには、NG。
  例えば、ey=180;  に固定、ex=いろんな値をとってみる。ヤカンは上下のオペレーションとは逆方向に回転する。

続く。

訂正20081015:
 上下⇔ey  左右⇔ey という対応づけだったものを
 上下⇔ex  左右⇔ex という対応づけに変更した。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/52510