用GLM确定四元数前面的位置

Determine position in front of quaternion with GLM?

本文关键字:前面 位置 四元数 GLM      更新时间:2023-10-16

有没有一种方法可以计算四元数(XYZW(旋转前方的XYZ位置,最好使用GLM?

我知道Quat旋转和要计算前方位置的对象的位置。

我知道如何计算旋转矩阵前面的位置,这里有一个前向量、上向量和右向量,但在这种情况下,我只有XYZW值(其中W总是0,我从来没有看到它变成1.?(

简而言之:我有数据:Quat (X Y Z W)Position(X Y Z),我想计算PositionInFront(Position, Quat, Distance, &X, &Y, &Z)

如何实现这一目标?

我试着转换为3x3矩阵,并执行向上、向右、向前(因为3x3矩阵转换就是这些值,对吧?(计算,但它们没有返回正确的位置。

或者可以确定对象的Z角度吗?(仅围绕世界Z/高度轴旋转(

我忘记使用的车辆似乎还有两个四元数结构。这3个是前、右、上计算公式所需的完整集合:

    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);