質問

(0、0、0)などの点と(x、y、z)のようなベクトルを指定します。 (0、0、0)を中心とする負のZ軸をこのベクトルの方向に向ける最も簡単な方法は何ですか? OpenGLを使用した例は歓迎されますが、必須ではありません。

役に立ちましたか?

解決

座標フレームを回転させて特定の方向を指すには、さまざまな方法があります。これらはすべて、z軸を希望する方向に向けたままにしますが、x軸とy軸の方向はさまざまです。

次のようにすると、回転が最短になりますが、これは必要な場合とそうでない場合があります。

vec3 target_dir = normalise( vector );
float rot_angle = acos( dot_product(target_dir,z_axis) );
if( fabs(rot_angle) > a_very_small_number )
{
    vec3 rot_axis = normalise( cross_product(target_dir,z_axis) );
    glRotatef( rot_angle, rot_axis.x, rot_axis.y, rot_axis.z );
}

他のヒント

Diana Gruberの記事の記事

をご覧ください。

自分の質問に答えるために、私が思いついた最良の答えはこれです:

ベクターを「コンポーネント」に分割します。 xコンポーネントは、x軸に沿った変位です。三角法に移ると、cos(alpha)= x / vector_magnitudeになります。 RHSを計算すると、アルファを導出できます。アルファは、y軸を中心に回転する必要がある量です。

その後、glRotatef()の一連の呼び出しにより、座標系をベクトルに合わせることができます

座標の回転(または同じことを行うオブジェクトの回転)に関するリソースはたくさんあります。 このサイトから多くのことを学びました。複数のディメンション、特にベクターの操作方法

ページここには、セクションを移動するための変換" z軸へのベクトル」それ あなたが望むもの、またはおそらくその逆のようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top