4
$\begingroup$

I need to find the transformation matrix (homogeneous coordinates) that flips an object about a plane whose normal is directed towards (-2 2 0), and intersects the y-axis at y=2.

I know how to do that when I have 3 points on the plane (A,B,C): translate to origin, find the orthonormal basis of the plane (u,v,w axes) and then rotate the plane to match XYZ coordinate system (with the axes I found), perform the reflection, rotate back and translate back.

However in this case I have a normal and another data which I don't know how to use.

Any ideas?

$\endgroup$
2
$\begingroup$

This is the same problem as the rotation about an axis. What you need is a matrix (any matrix) that satisfies the following corner constraint: one axis must point toward $(-2, 2, 0)$ in the case of a rotation this matrix must be a rotation matrix, in the case of a planar mirror it just has to span the 3D space. But since we know how to make an arbitrary rotation matrix we use the same approach.

  1. Pick any vector (u) that's not parallel to the normal (n)
  2. Take cross product of u and n for b
  3. Take cross product of n and b for a

You now have an arbitrary rotation matrix with one axis defined using vectors n, b and a. Otherwise same as the last question.

$\endgroup$
  • $\begingroup$ Can you please give a full technical answer with the vectors exact calculations and normalizations? I'm finding it difficult to follow the logic. 1. Why is it the same as rotation about an axis? With rotation around axis, you HAVE to use the axis as one of the 3 orthonormal basis you create (here you don't use the normal N). 2. Why do you take a "vector thats not parallel to normal" and not the normal? $\endgroup$ – Jjang Aug 28 '16 at 21:44
  • $\begingroup$ I'd expect something like: $w=\dfrac{n}{|n|}$, $v=\dfrac{n\times (0,0,1)^T}{|n\times (0,0,1)^T|}$, $u=v\times w$ $\endgroup$ – Jjang Aug 28 '16 at 21:46
  • $\begingroup$ @jiang you need to stop thinking in formulas and drawing the vectors. Once you do it gets easier to understand the only reason you do not understand is because you look at the formulas. Ys there was a paste error in the procedure. $\endgroup$ – joojaa Aug 29 '16 at 5:15
  • $\begingroup$ But note you do not have to orthonormalize the matrix, you do not have to normalize the vectors, you could use the sizing in the reflection vectors. You dont need the vectors to be calculated this way. Your secodary directions could easily be n+(0,1,0) and n+(0,0,1) but its just easier if you have a rotation matrix. But as i said draw the matrix vector on a piece of paper or screen @jiang then you will never need to remember the formulas as it becomes evident once you draw enough images. $\endgroup$ – joojaa Aug 29 '16 at 5:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.