有没有办法计算四元数(XYZW)旋转前的XYZ位置,最好是使用GLM?
我知道Quat旋转和我想要计算前面位置的物体的位置。
我知道如何计算旋转矩阵前面的位置,其中你有一个前向量,向上向量和向右向量,但在这种情况下我只有XYZW值(其中W总是0,我从来没有看到它是becomming 1 ..?)
非常简短:
我拥有的数据:Quat (X Y Z W)
和Position(X Y Z)
,我想计算PositionInFront(Position, Quat, Distance, &X, &Y, &Z)
如何实现这一目标?
我尝试了一个强制转换为3x3矩阵并执行Up,Right,Front(因为3x3矩阵转换是这些值,对吗?)计算但它们没有返回正确的位置。
或者是否可以确定物体Z角? (仅绕世界Z /高度轴旋转)
答案 0 :(得分: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);