1

OpenGLプログラムのオブジェクトの向きに問題があり、3Dベクトルと角度または4Dベクトルに基づいてx、y、zの回転を計算できません。私はC++で作業しています。

私は持っています:

Vector3f myVector;
float angle;    
float rotx;
float roty;    
float rotz;

//i need smomething like

doSomething(a,angle,&rotx,&roty,&rotz);    
glRotatef(rotx,1.0,0,0);    
glRotatef(roty,0,1.0,0);    
glRotatef(rotz,0,0,1.0);

// draw object

「myVector」は3D空間のベクトルです。オブジェクトをベクトルの方向に回転させたい。「角度」は、ベクトルを中心としたオブジェクトの回転です。「rotx、roty、rotz」はローカル変数です。これを行うためにrotx、roty、royzを計算する方法は?

http://en.wikipedia.org/wiki/File:Euler_AxisAngle.png

リンク上の画像では、オブジェクトは「x」の方向に向けられています。「e」の方向に向きを変えたいので、「O」は私の「角度」です。

4

1 に答える 1

0

これを行うためにrotx、roty、royzを計算する方法は?

あなたの問題に対する唯一の解決策はありません。目標方向ごとに、それをオイラー角で表現する 6 つの異なる方法があります。

回転を明確に表す唯一の方法は、回転行列、またはそれに近いクォータニオンです。

glRotate のパラメータは四元数に非常に近いです。実際、軸パラメータは四元数の正規化された i、j、k 要素であり、実四元数部分はラジアン単位の回転角度です。

于 2012-12-28T17:45:06.927 に答える