Two Dimensional Givens Rotation

The following matrix is the two dimensional Givens Rotation from the x axis to the y axis:

(cos(θ)cos(θ+90°)sin(θ)sin(θ+90°))(cos(θ)cos(θ+π2)sin(θ)sin(θ+π2))(cos(θ)sin(θ)sin(θ)cos(θ))

This matrix rotates two dimensional column vectors about the origin of the xy plane.

 

For instance, if we rotate the unit column vector (1,0) using this Givens Rotation, then we have:

(cos(θ)cos(θ+90°)sin(θ)sin(θ+90°))(10)(cos(θ)cos(θ+π2)sin(θ)sin(θ+π2))(10)(cos(θ)sin(θ)sin(θ)cos(θ))(10)(cos(θ)sin(θ))

 

Therefore, if we rotate the column vector (x,y) , then we have:

(cos(θ)cos(θ+90°)sin(θ)sin(θ+90°))(xy)(cos(θ)cos(θ+π2)sin(θ)sin(θ+π2))(xy)(cos(θ)sin(θ)sin(θ)cos(θ))(xy)(xcos(θ)ysin(θ)xsin(θ)+ycos(θ))

and to rotate that column vector (x,y) back to the x axis so that the y value is zero, we would have:

(cos(θ)cos(θ+90°)sin(θ)sin(θ+90°))(xy)=(x0)(cos(θ)cos(θ+π2)sin(θ)sin(θ+π2))(xy)=(x0)(cos(θ)sin(θ)sin(θ)cos(θ))(xy)=(x0)(xcos(θ)ysin(θ)xsin(θ)+ycos(θ))=(x0)

So, we need to use an angle θ such that the y value goes to zero. Let’s concentrate on that lower equation:

xsin(θ)+ycos(θ)=0xsin(θ)=ycos(θ)sin(θ)cos(θ)=yxtan(θ)=yxθ=arctan(yx)θ=arctan(yx)

Remember: arctan(yx) is atan2( y, x ) in C/C++ and ArcTan[ x, y ] in Mathematica.

 

Therefore, when we rotate the column vector (x,y) back to the x axis so that the y value is zero, we have:

(cos(arctan(yx))cos(arctan(yx)+90°)sin(arctan(yx))sin(arctan(yx)+90°))(xy)(cos(arctan(yx))cos(arctan(yx)+π2)sin(arctan(yx))sin(arctan(yx)+π2))(xy)(cos(arctan(yx))sin(arctan(yx))sin(arctan(yx))cos(arctan(yx)))(xy)(xx2+y2(yx2+y2)yx2+y2xx2+y2)(xy)(x2x2+y2+y2x2+y2xyx2+y2+xyx2+y2)(x2+y2x2+y20)(x2+y20)

Since the radius r from the origin to the column vector (x,y) is x2+y2 (also known as the norm), then we also have:

(x2+y20)(r0)

 

Tagged on:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.