First of all, the general rotation matrix is simply the product of the three matrices required to rotate about specific axes. These matrices are: Let c = cos(theta) and s = sin(theta) |1 0 0 0| Let x = |0 c s 0| |0 -s c 0| |0 0 0 1| |c 0 -s 0| Let y = |0 1 0 0| |s 0 c 0| |0 0 0 1| |c s 0 0| Let z = |-s c 0 0| |0 0 1 0| |0 0 0 1| |c 0 -s 0| x*y = |s*s c s*c 0| |c*s -s c*c 0| |0 0 0 1| |c*c c*s -s 0| x*y*z = |s*s*c+c*-s s*s*s+c*c s*c 0| (answer to part 1) |c*s*c+-s*-s c*s*s+-s*c c*c 0| |0 0 0 1| Let g = x*y*z Let g**(t) be g transpose, g**(-1) be g inverse, and I be the identity matrix |c*c s*s*c+c*-s c*s*c+-s*-s 0| Then g**(t) = |c*s s*s*s+c*c c*s*s+-s*c 0| |-s s*c c*c 0| |0 0 0 1| g**(t) = g**(-1) iff g**(t) * g = I g**(t) * g = c*c*c*c+c*s*c*s+-s*-s (A) Column 1: (s*s*c+c*-s)*c*c+(s*s*s+c*c)*c*s+s*c*-s (B) (c*s*c+-s*-s)*c*c+(c*s*s+-s*c)*c*s+c*c*-s (C) 0 c*c*(s*s*c+c*-s)+c*s*(s*s*s+c*c)+-s*s*c (D) Column 2: (s*s*c+c*-s)*(s*s*c+c*-s)+(s*s*s+c*c)*(s*s*s+c*c)+s*c*s*c (E) (c*s*c+-s*-s)*(s*s*c+c*-s)+(c*s*s+-s*c)*(s*s*s+c*c)+c*c*s*c (F) 0 c*c*(c*s*c+-s*-s)+c*s*(c*s*s+-s*c)+-s*c*c (G) Column 3: (s*s*c+c*-s)*(c*s*c+-s*-s)+(s*s*s+c*c)*(c*s*s+-s*c)+s*c*c*c (H) (c*s*c+-s*-s)*(c*s*c+-s*-s)+(c*s*s+-s*c)*(c*s*s+-s*c)+c*c*c*c (I) 0 0 Column 4: 0 0 1 Note: the above matrix products were generated with a symbolic matrix multiplier, hence their strange format. To demonstrate the above matrix is the identity, trigonometric identities can be used, to show that: (A) = 1, (B) = 0, (C) = 0 (D) = 0, (E) = 1, (F) = 0 (G) = 0, (H) = 0, (I) = 1 Each of these ((A) through (I)) are demonstrated in turn, below. Note that: s**2 + c**2 = 1 Expression (A) = 1: c*c*c*c+c*s*c*s+-s*-s = c**4 + s**2*c**2 + s**2 = c**2(c**2 + s**2) + s**2 = c**2(1) + s**2 = c**2 + s**2 = 1 Expression (B) = 0: (s*s*c+c*-s)*c*c+(s*s*s+c*c)*c*s+s*c*-s = (s**2*c - s*c)c**2 + (s**3 + c**2)s*c - s**2*c = s**2*c**3 - s*c**3 + s**4*c + s*c**3 - s**2*c = (s**2 - s + s)c**3 + s**4*c - s**2*c = s**2*c**3 + s**4*c - s**2*c = c(s**2*c**2 + s**4) - s**2*c = s**2*c(c**2 + s**2) - s**2*c = s**2*c(1) - s**2*c = s**2*c - s**2*c = 0 Expression (C) = 0: (c*s*c+-s*-s)*c*c+(c*s*s+-s*c)*c*s+c*c*-s = (s*c**2 + s**2)c**2 + (s**2*c - s*c)s*c - s*c**2 = s*c**4 + s**2*c**2 + s**3*c**2 - s**2*c**2 - s*c**2 = s*c**4 + s**3*c**2 - s*c**2 + c**2(s**2 - s**2) = s*c**4 + s**3*c**2 - s*c**2 + c**2(0) = s*c**4 + s**3*c**2 - s*c**2 = s*c**2(c**2 + s**2 - 1) = s*c**2(1 - 1) = s*c**2(0) = 0 Expression (D) = 0: c*c*(s*s*c+c*-s)+c*s*(s*s*s+c*c)+-s*s*c = c**2(s**2*c - s*c) + s*c(s**3 + c**2) - s**2*c = s**2*c**3 - s*c**3 + s**4*c + s*c**3 - s**2*c = s**2*c(c**2 + s**2) - s*c**3 + s*c**3 - s**2*c = s**2*c(c**2 + s**2) - s**2*c = s**2*c(1) - s**2*c = s**2*c - s**2*c = 0 Expression (E) = 1: (s*s*c+c*-s)*(s*s*c+c*-s)+(s*s*s+c*c)*(s*s*s+c*c)+s*c*s*c = (s**2*c - s*c)**2 + (s**3 + c**2)**2 + s**2*c**2 = (s**2*c - s*c)**2 + s**6 + 2*s**3*c**2 + c**4 + s**2*c**2 = (s**2*c - s*c)**2 + s**6 + 2*s**3*c**2 + c**2(c**2 + s**2) = (s**2*c - s*c)**2 + s**6 + 2*s**3*c**2 + c**2(1) = (s**2*c - s*c)**2 + s**6 + 2*s**3*c**2 + c**2 = s**4*c**2 - 2*s**3*c**2 + s**2*c**2 + s**6 + 2*s**3*c**2 + c**2 = s**4*c**2 + s**2*c**2 + s**6 + c**2 = s**4*c**2 + s**6 + s**2*c**2 + c**2 = s**4(c**2 + s**2) + s**2*c**2 + c**2 = s**4(1) + s**2*c**2 + c**2 = s**4 + s**2*c**2 + c**2 = s**2(s**2 + c**2) + c**2 = s**2(1) + c**2 = s**2 + c**2 = 1 Expression (F) = 0: (c*s*c+-s*-s)*(s*s*c+c*-s)+(c*s*s+-s*c)*(s*s*s+c*c)+c*c*s*c = (s*c**2 + s**2)(s**2*c - s*c) + (s**2*c - s*c)(s**3 + c**2) + s*c**3 = s**3*c**3 - s**2*c**3 + s*4*c - s**3*c + (s**2*c - s*c)(s**3 + c**2) + s*c**3 = s**2*c**3(s - 1) + s*4*c - s**3*c + (s**2*c - s*c)(s**3 + c**2) + s*c**3 = s**2*c**3(s - 1) + s**3*c(s - 1) + (s**2*c - s*c)(s**3 + c**2) + s*c**3 = (s**2*c**3 + s**3*c)(s - 1) + (s**2*c - s*c)(s**3 + c**2) + s*c**3 = (s**2*c**3 + s**3*c)(s - 1) + (s*c)(s**3 + c**2)(s - 1) + s*c**3 = (s**2*c**3 + s**3*c + (s*c)(s**3 + c**2))(s - 1) + s*c**3 = (s**2*c**3 + s**3*c + s**4*c + s*c**3)(s - 1) + s*c**3 = (s**2*c**3 + s**3*c + s**4*c + s*c**3)(s - 1) + s*c**3 = (s**2*c**3 + s**4*c + s**3*c + s*c**3)(s - 1) + s*c**3 = (s**2*c(c**2 + s**2) + s**3*c + s*c**3)(s - 1) + s*c**3 = (s**2*c(1) + s**3*c + s*c**3)(s - 1) + s*c**3 = (s**2*c + s**3*c + s*c**3)(s - 1) + s*c**3 = (s**2*c + s*c(s**2 + c**2))(s - 1) + s*c**3 = (s**2*c + s*c(1))(s - 1) + s*c**3 = (s**2*c + s*c)(s - 1) + s*c**3 = s*c(s + 1)(s - 1) + s*c**3 = s*c(s**2 - 1) + s*c**3 = s*c*(-c**2) + s*c**3 = -s*c**3 + s*c**3 = 0 Expression (G) = 0: c*c*(c*s*c+-s*-s)+c*s*(c*s*s+-s*c)+-s*c*c = c**2(s*c**2 - s**2) + s*c(s**2*c - s*c) - s*c**2 = s*c**2(c**2 - s) + s**2*c**2(s - 1) - s*c**2 = s*c**2(c**2 - s - 1) + s**2*c**2(s - 1) = s*c**2(-s**2 - s) + s**2*c**2(s - 1) = -s**2*c**2(s + 1) + s**2*c**2(s - 1) = s**2*c**2(1 - s) + s**2*c**2(s - 1) = s**2*c**2(1 - s + s - 1) = s**2*c**2(0 + 0) = 0 Expression (H) = 0: (s*s*c+c*-s)*(c*s*c+-s*-s)+(s*s*s+c*c)*(c*s*s+-s*c)+s*c*c*c = (s**2*c - s*c)(s*c**2 + s**2) + (s**3 + c**2)(s**2*c - s*c) + s*c**3 = (s**2*c - s*c)(s*c**2 + s**2 + s**3 + c**2) + s*c**3 = (s**2*c - s*c)(s*c**2 + s**3 + s**2 + c**2) + s*c**3 = (s**2*c - s*c)(s*c**2 + s**3 + 1) + s*c**3 = (s**2*c - s*c)(s(c**2 + s**2) + 1) + s*c**3 = (s**2*c - s*c)(s(1) + 1) + s*c**3 = (s**2*c - s*c)(s + 1) + s*c**3 = s**3*c - s**2*c + s**2*c - s*c + s*c**3 = s**3*c - s*c + s*c**3 = s*c(s**2 - 1 + c**2) = s*c(1 - 1) = s*c(0) = 0 Expression (I) = 1: (unfinished) (c*s*c+-s*-s)*(c*s*c+-s*-s)+(c*s*s+-s*c)*(c*s*s+-s*c)+c*c*c*c (s*c**2 + s**2)**2 + (s**2*c - s*c)**2 + c**4 s((c**2 + s)**2 + (s*c - c)**2) + c**4 s(c**4 + 2*s*c**2 + s**2 + s**2*c**2 - 2*s*c**2 + c**2) + c**4 s(c**4 + 2*s*c**2 + s**2*c**2 - 2*s*c**2 + s**2 + c**2) + c**4 s(c**4 + 2*s*c**2 + s**2*c**2 - 2*s*c**2 + 1) + c**4 s(c**4 + s**2*c**2 + 2*s*c**2 - 2*s*c**2 + 1) + c**4 s(c**4 + s**2*c**2 + 1) + c**4 s(c**2(c**2 + s**2) + 1) + c**4 s(c**2(1) + 1) + c**4 s(c**2 + 1) + c**4 s*c**2 + s + c**4 c**2(s + c**2) + s