三维空间中点的旋转

时间:2011-03-17 09:18:17

标签: algorithm math geometry rotation

我有一个与3D空间中的点旋转有关的问题。

假设我有一个带X,Y和Z坐标的点。

现在我想通过以下三种方式之一指定旋转来旋转它:

  1. 按用户定义的学位
  2. 按用户定义的旋转轴
  3. 围绕(相对于)用户定义的点
  4. 我在here找到了良好的链接,但它没有解决第3点。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:8)

所有旋转都将围绕原点进行。所以你转换为原点,旋转,然后翻译回来。

T = translate from global coordinates to user-coordinates
R = rotate around the origin (like in your link)
(T^-1) = translate back
point X

X_rotated = (T^-1)*R*T*X 

如果要旋转多个点,则将矩阵相乘:

A = (T^-1)*R*T
X_rotated = A*X