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)

 

Leave a Reply

Your email address will not be published.

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