Rotation of Point in 3D Space

2019-01-15 18:06发布

问题:

I have one problem related to rotation of point in 3D-space.

Suppose I have one point with X, Y and Z coordinates.

And now I want to rotate it, by specifying the rotation in one of these three ways:

  1. By user-defined degree
  2. By user-defined axis of rotation
  3. Around (relative to) user-defined point

I found good link over here, but it doesn't address point 3. Can anyone help me solve that?

回答1:

All rotations will go around the origin. So you translate to the origin, rotate, then translate back.

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 

If you have multiple points to rotate then multiply the matrices together:

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