2D rotation matrix plus another 2D rotation matrix is a similarity matrix (scaled 2D rotation)

Alec Jacobson

November 16, 2011

weblog/

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((θ12)/2)*cos((θ12)/2)
sin(θ1)+sin(θ2) = 2*sin((θ12)/2)*cos((θ12)/2)
Now we declare that:
s = 2*cos((θ12)/2)
θ3 = (θ12)/2
Then it follows that:
R1 + R2
  =
  / s*cos((θ12)/2)  -s*sin((θ12)/2) \
  \ s*sin((θ12)/2)   s*cos((θ12)/2) /
  =
  s * / cos(θ3)  -sin(θ3) \
      \ sin(θ3)   cos(θ3) /
  = 
  s * R3