Previous | Next --- Slide 34 of 42
Back to Lecture Thumbnails

The main idea of this slide is to reduce rotation about an arbitrary vector to the problem of rotation around the z axis (one of the basic rotation transforms we discussed on slide 33. The challenge is to apply a transform that aligns w with the z axis. Or, if you think about applying a transform as a change of coordinate space, we just need to change to a space where 'w' is represented as [0 0 1]^T, apply the rotation about z transform in this space, and then change back to the original coordinate space.

The first step on this slide, "form an orthonormal basis around w" deserves additional discussion.

Consider a coordinate system with w as one of the coordinate axes. (For simplicity, I'll assume w is normalized.) To form a basis, we need to compute two additional axes that are orthogonal to 'w' (and also to each other).

Finding orthogonal vector 1:

The cross-product of w and any non-co-linear vector t yields a vector orthogonal to w. Therefore:

$$ \mathbf{u} = \frac{\mathbf{t}\times\mathbf{x}}{\left \| \mathbf{t}\times\mathbf{x} \right \|} $$

One way to quickly construct a t that is not parallel to w is to simply set the smallest magnitude component of w to 1.

Finding orthogonal vector 2:

Given u and w, the final vector completing the basis is $\mathbf{v} = \mathbf{w} \times \mathbf{u}$

Notice in the slide above that R_uvw maps u to:

[u dot u, u dot v, u dot w]^T = [1 0 0]^T`

and maps w to:

[w dot u, w dot v, w dot w]^T = [0 0 1]^T`

Reference reading: If these cross-products were confusing, see the coordinate notation section of the Wikipedia article on cross-product.


Hi, this is completely off the course but I have a doubt

I am also doing 16-811 math fundamentals for robotics where we were asked to perform a rigid body rotation on p1, p2, p3,....,pn points of an object to p1', p2', p3', p4',....,pn' using SVD

The prof had given a hint that you should not perform an affine tranform but a rigid-body rotation.

Can someone please explain to me why we can't use the method of 1) put object on origin 2) rotate it 3) put object back

using homogenous coordinates? how is an affine transform different from a rigid body transform

sorry for my confusion and mixing of subjects.