Note: The math on this page is progressively rendered. It can take up to 45 seconds before the final rendering is complete.
Remembering that and ,
the following matrix is the three-dimensional Givens Rotation from the -axis to the -axis (rotation counter-clockwise around the -axis):
This matrix rotates three-dimensional column vectors about
the origin of the plane:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similarly, the following is the three-dimensional Givens Rotation from the -axis to the -axis (rotation clockwise around the -axis):
This matrix rotates three-dimensional column vectors about
the origin of the plane:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that this is not the same as the traditional rotation
matrix where we rotate around the axis using the right-hand rule (i.e.
where we rotate in the opposite direction about the origin of the plane).
In other words, given and remembering that and ,
we have the following:
Lastly, the following is the three-dimensional Givens Rotation from the -axis to the -axis (rotation counter-clockwise around the -axis):
This matrix rotates three-dimensional column vectors about
the origin of the plane:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Observe that given dimensions, we have the following number of
distinct Givens Rotation
matrices:
For instance, when we’re in three dimensions, we have and distinct Givens Rotation matrices:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
and
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Moreover, notice the order in which we’re considering these
distinct Givens Rotation
matrices:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We’ll leverage this order in a moment. Before that, let’s see what happens when we
rotate the unit column vector using each of these Givens Rotations:
,
|
,
|
and
|
.
|
As expected, this simply extracts the first column vector
from each Givens Rotation
matrix. Because we’re extracting the
first column vector, we’ll only see in those vectors … we’ll never see ;
so for the Givens Rotation
matrices that modify ,
will always be in the position and will walk its way up the remaining dimensions
based on the order established above.
For the Givens Rotation
matrices that do not modify (it’s just that first matrix in three
dimensions), those rotations do not impact the position.
Looking back at our established order:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
we see that the non- rows cannot impact the position.
In this three-dimensional case, we see that the Givens Rotation matrix
associated with the row cannot modify the position.
To make this a little clearer, let’s rotate the arbitrarily positioned
column vector :
,
|
,
|
and
|
.
|
We immediately see that rotating about the plane (multiplying by the first Givens Rotation matrix) does not
impact the position … and only impacts the and positions if or … which only happens when we have a column
vector off of the -axis.
For the column vector on the -axis, rotating about the plane (multiplying by that first Givens Rotation matrix) has no
effect … we’ll still have after that multiplication.
This brings up the question: given the column vector where and ,
can all column vectors be recovered using just these Givens Rotation matrices?
First, we’ll start by using all the Givens Rotation matrices in our
established order … and notice that the first Givens Rotation matrix doesn’t
really help out that much:
Then, we have:
For ,
implies ,
,
and ,
so given ,
we have:
So, we can recover the column vector .
Given with and ,
we have:
Moreover, since ,
we also have:
Remember: is atan2(
y, x ) in C/C++ and ArcTan[ x, y
] in Mathematica.
Given with ,
,
and remembering that and ,
if ,
we have:
|
and
|
.
|
Given with and ,
since ,
if ,
we have:
Moreover, since ,
we also have:
Given with ,
,
and remembering that and , we have:
|
and
|
|
Given with ,
,
and ,
since and ,
if and ,
we have:
So, we have .
Obviously, since ,
,
and ,
if and ,
we also have:
|
and
|
.
|
So, we also have and such that:
Therefore, all column vectors can be recovered by applying the Givens Rotation matrices associated
with the row to the column vector where and :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that the coordinate system implied here is not the
same as the traditional
spherical coordinate system . In the traditional
spherical coordinate system, we have:
where ,
where is the angle measured from the positive -axis (toward the positive -axis), and where is the angle measured from the positive -axis (toward the negative -axis); however, what we have here is the
following:
where ,
where is the angle measured from the positive -axis (toward the positive -axis), and where is the angle measured from the positive -axis (toward the positive -axis).
Now, let’s rotate a column vector back to the -axis so that we get the column vector . In order to do that, let’s first take a look
at each inverse of these Givens
Rotation matrices using augmentation and finding the reduced row echelon
forms … which as you’ll see is very similar for each matrix. Remembering that which implies that ,
we have:
Therefore, the inverse of each three-dimensional Givens Rotation matrix is simply
the transpose of that matrix:
and it shouldn’t be too hard to see that the inverse of
each -dimensional Givens Rotation matrix is also
the transpose of that matrix … like it is for any other -dimensional rotation matrix.
Also, if we consider rotations in the opposite direction
where while remembering that and ,
then we have:
We see that each inverse amounts to just rotating in the
opposite direction. In other words, since and implies that and , we have:
Now, let’s use those inverse Givens Rotation matrices to
rotate a column vector in those opposite directions back to the -axis so that we get the column vector .
First, we’ll start by using all the Givens Rotation matrices in our
established order … and get rid of the ones that don’t matter here:
Next, remembering that the inverse of a rotation matrix is
its transpose, then we have:
Keeping in mind that and ,
we have:
Since implies ,
we also have:
In other words, given a column vector ,
we can rotate that vector back to the -axis by applying Givens Rotation matrices in the
opposite order using the opposite angles. Instead of the following:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
repeated again with subscripts to keep things clear:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
we now have the following:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In terms of this new backward ordering and keeping in mind
that ,
we now have the following:
So, we have:
Given ,
we choose ,
,
and .
After applying ,
we have:
Then after applying and ,
since ,
,
,
and ,
we have:
Therefore, since ,
we have: