0

できればGLMを使用して、クォータニオン (XYZW) 回転の前に XYZ 位置を計算する方法はありますか?

前の位置を計算したいオブジェクトのQuat回転と位置を知っています。

フロントベクトル、アップベクトル、右ベクトルがある回転行列の前の位置を計算する方法は知っていますが、この場合は XYZW 値しかありません (W は常に 0 で、1 になることはありません.. ?)

要するに: 私が持っているデータ:Quat (X Y Z W)そしてPosition(X Y Z)、計算したいPositionInFront(Position, Quat, Distance, &X, &Y, &Z)

この目標を達成する方法は?

3x3matrix へのキャストを試み、Up,Right,Front (3x3 マトリックス キャストはこれらの値であるためですよね?) の計算を実行しましたが、正しい位置が返されません。

または、オブジェクトの Z 角度を決定することは可能でしょうか? (ワールド Z 周りの回転/高さ軸のみ)

4

1 に答える 1

0

使用するのを忘れていた車両には、さらに 2 つのクォータニオン構造があったようです。これら 3 つは、Front,Right,Up の計算式に必要な完全なセットです。

    float offX = 10.0f;
    float offY = 0.0f;
    float offZ = 0.0f;

    float x = offX * info.Rotation.Front.x + offY * info.Rotation.Right.x + offZ * info.Rotation.Up.x + info.Pos.x;
    float y = offX * info.Rotation.Front.y + offY * info.Rotation.Right.y + offZ * info.Rotation.Up.y + info.Pos.y;
    float z = offX * info.Rotation.Front.z + offY * info.Rotation.Right.z + offZ * info.Rotation.Up.z + info.Pos.z;

    float Angle = (atan2(x-info.Pos.x, y-info.Pos.y) * 180.0f / PI);
于 2013-02-25T14:35:32.573 に答える