如何使用四元数围绕点旋转对象?

时间:2009-05-22 16:48:50

标签: math 3d

在我的3D应用程序中,我将对象的位置存储在矢量中,并且它在四元数中围绕原点旋转。我需要围绕具有任意原点的矢量旋转对象。我尝试将位置 - vectorOrigin和旋转转换为矩阵,旋转矩阵,然后从结果矩阵中提取位置和旋转作为向量和四元数。该位置正常,但旋转保持不变(对象围绕给定的矢量旋转,但它始终面向相同的方向)。

我的方法错了还是我有错误?

2 个答案:

答案 0 :(得分:8)

我不确定你为什么期望轮换改变。你有程序化的“生物”代表原点,目的地点和旋转。根据其他两个“生物”计算目的地点不应影响它们。

通常的方法怎么样?如果需要围绕点(a,b,c)旋转位置(x,y,z),首先平移位置,使旋转位于原点周围:使用(xa,yb,zc)作为位置,像往常一样围绕原点旋转以获得新的平移位置(x'-a,y'-b,z'-c),然后平移并获得新位置(x',y',z')。 / p>

答案 1 :(得分:1)

我不熟悉四元数,也许这完全是offtopic,但你不能围绕一个点旋转一个3d对象,旋转轴必须是一条直线。