1

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?

5
  • Is this an opengl related question? Commented Mar 17, 2011 at 9:31
  • @Kai, No it is just a mats related Question......Just Rotation Of Point In 3D Space........ Thanks...... Commented Mar 17, 2011 at 9:32
  • what is the meaning of point 3? how is it different from a simple axis? Commented Mar 17, 2011 at 9:32
  • @Protostome, where you fine point 3? though i giving answer by my understanding, Point3D means Point with X, Y and Z Co-Ordinate....... Commented Mar 17, 2011 at 9:35
  • The third question is not well defined. To rotate in 3D you must choose an axis; through the user-defined point there are (infinitely) many axes, and each one will give a different rotation. Commented Mar 17, 2011 at 17:17

1 Answer 1

8

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 
Sign up to request clarification or add additional context in comments.

5 Comments

ya but is there any practical example?
Translation is not done my matrix multiplication but by vector subtraction. Therefore, if * means just matrix multiplication, this doesn't work. If * means concatenation of some transformations it makes some sense, but you still can not just "multiply" (*) translation (=vector subtraction) with rotation (=matrix multiplication) and get another matrix as result.
@curd: there's a very standard mathematical technique whereby you augment your vectors and the matrix with one extra dimension, and can then represent any affine transformation, including translations, as matrix multiplication. see en.wikipedia.org/wiki/Transformation_matrix for instance.
@Martin DeMello: ok, thanks to point this out. So also translation can be expressed easily as matrix multiplication within a special formalism that uses 4 dimensions. This is, however, not obvious and nowhere mentioned in the answer. Or let me say it this way: anybody being familiar with this formalism wouldn't need to ask the question.
@curd: true, but anyone wanting to have this question answered would do well to start by learning that formalism. it really is one of the first things you learn when studying this sort of geometric manipulation.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.