一尘不染

3D空间中点的旋转

algorithm

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

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

现在,我想通过以下三种方式之一指定旋转角度:

  1. 按用户定义的程度
  2. 通过用户定义的旋转轴
  3. 围绕(相对于)用户定义的点

我在这里找到了很好的链接,但是没有指向第3点。有人可以帮我解决这个问题吗?


阅读 243

收藏
2020-07-28

共1个答案

一尘不染

所有旋转将绕原点旋转。因此,您可以平移到原点,旋转,然后平移回去。

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
2020-07-28