2D rotation matrix plus another 2D rotation matrix is a similarity matrix (scaled 2D rotation)
Alec Jacobson
November 16, 2011
Consider we have two rotation matrices:
R1 = / cos(θ1) -sin(θ1) \
\ sin(θ1) cos(θ1) /
R2 = / cos(θ2) -sin(θ2) \
\ sin(θ2) cos(θ2) /
Then we can show that:
R1 + R2 = s * R3
where s is a scalar and R3 is another 2D rotation.
First we just add the components to get:
R1 + R2 = / cos(θ1)+cos(θ2) -(sin(θ1)+sin(θ2)) \
\ sin(θ1)+sin(θ2) cos(θ1)+cos(θ2) /
Notice we already have the right pattern:
R1 + R2 = / A -B \
\ B A /
we just need to show that we can pull out a common scaling term and angle from A and B.
We can use trigonometric identities to turn the sums of cosines and the sums of sines into products, namely:
cos(θ1)+cos(θ2) = 2*cos((θ1+θ2)/2)*cos((θ1-θ2)/2)
sin(θ1)+sin(θ2) = 2*sin((θ1+θ2)/2)*cos((θ1-θ2)/2)
Now we declare that:
s = 2*cos((θ1-θ2)/2)
θ3 = (θ1+θ2)/2
Then it follows that:
R1 + R2
=
/ s*cos((θ1+θ2)/2) -s*sin((θ1+θ2)/2) \
\ s*sin((θ1+θ2)/2) s*cos((θ1+θ2)/2) /
=
s * / cos(θ3) -sin(θ3) \
\ sin(θ3) cos(θ3) /
=
s * R3