E1, E2, E3 = basis vectors, geometric multiplication rules: given u and v are basis vectors, uu = 1 uv = -vu want to compute: a b (rotor composition) and a b a* (rotor rotation) where a, b are rotors, a* = reverse(a) a = Sa + BaxyE1E2 + BaxzE1E3 + BayzE2E3 b = Sb + BbxyE1E2 + BbxzE1E3 + BbyzE2E3 a* = Sa - BaxyE1E2 - BaxzE1E3 - BayzE2E3 ------------- a b = (Sa + BaxyE1E2 + BaxzE1E3 + BayzE2E3)(Sb + BbxyE1E2 + BbxzE1E3 + BbyzE2E3) = SaSb + SaBbxyE1E2 + SaBbxzE1E3 + SaBbyzE2E3 + SbBaxyE1E2 + BaxyBbxyE1E2E1E2 + BaxyBbxzE1E2E1E3 + BaxyBbyzE1E2E2E3 + SbBaxzE1E3 + BaxzBbxyE1E3E1E2 + BaxzBbxzE1E3E1E3 + BaxzBbyzE1E3E2E3 + SbBayzE2E3 + BayzBbxyE2E3E1E2 + BayzBbxzE2E3E1E3 + BayzBbyzE2E3E2E3 = SaSb + SaBbxyE1E2 + SaBbxzE1E3 + SaBbyzE2E3 + SbBaxyE1E2 - BaxyBbxy - BaxyBbxzE2E3 + BaxyBbyzE1E3 + SbBaxzE1E3 + BaxzBbxyE2E3 - BaxzBbxz - BaxzBbyzE1E2 + SbBayzE2E3 - BayzBbxyE1E3 + BayzBbxzE1E2 - BayzBbyz = SaSb - BaxyBbxy - BaxzBbxz - BayzBbyz + SaBbxyE1E2 + SbBaxyE1E2 - BaxzBbyzE1E2 + BayzBbxzE1E2 + SaBbxzE1E3 + SbBaxzE1E3 + BaxyBbyzE1E3 - BayzBbxyE1E3 + SaBbyzE2E3 + SbBayzE2E3 - BaxyBbxzE2E3 + BaxzBbxyE2E3 ------------- a b a* = (a b)(Sa - BaxyE1E2 - BaxzE1E3 - BayzE2E3) = (SaSb - BaxyBbxy - BaxzBbxz - BayzBbyz + SaBbxyE1E2 + SbBaxyE1E2 - BaxzBbyzE1E2 + BayzBbxzE1E2 + SaBbxzE1E3 + SbBaxzE1E3 + BaxyBbyzE1E3 - BayzBbxyE1E3 + SaBbyzE2E3 + SbBayzE2E3 - BaxyBbxzE2E3 + BaxzBbxyE2E3) * (Sa - BaxyE1E2 - BaxzE1E3 - BayzE2E3) = SaSaSb - SaBaxyBbxy - SaBaxzBbxz - SaBayzBbyz + SaSaBbxyE1E2 + SaSbBaxyE1E2 - SaBaxzBbyzE1E2 + SaBayzBbxzE1E2 + SaSaBbxzE1E3 + SaSbBaxzE1E3 + SaBaxyBbyzE1E3 - SaBayzBbxyE1E3 + SaSaBbyzE2E3 + SaSbBayzE2E3 - SaBaxyBbxzE2E3 + SaBaxzBbxyE2E3 - SaSbBaxyE1E2 + BaxyBaxyBbxyE1E2 + BaxyBaxzBbxzE1E2 + BaxyBayzBbyzE1E2 - SaBaxyBbxyE1E2E1E2 - SbBaxyBaxyE1E2E1E2 + BaxyBaxzBbyzE1E2E1E2 - BaxyBayzBbxzE1E2E1E2 - SaBaxyBbxzE1E3E1E2 - SbBaxyBaxzE1E3E1E2 - BaxyBaxyBbyzE1E3E1E2 + BaxyBayzBbxyE1E3E1E2 - SaBaxyBbyzE2E3E1E2 - SbBaxyBayzE2E3E1E2 + BaxyBaxyBbxzE2E3E1E2 - BaxyBaxzBbxyE2E3E1E2 - SaSbBaxzE1E3 + BaxyBaxzBbxyE1E3 + BaxzBaxzBbxzE1E3 + BaxzBayzBbyzE1E3 - SaBaxzBbxyE1E2E1E3 - SbBaxyBaxzE1E2E1E3 + BaxzBaxzBbyzE1E2E1E3 - BaxzBayzBbxzE1E2E1E3 - SaBaxzBbxzE1E3E1E3 - SbBaxzBaxzE1E3E1E3 - BaxyBaxzBbyzE1E3E1E3 + BaxzBayzBbxyE1E3E1E3 - SaBaxzBbyzE2E3E1E3 - SbBaxzBayzE2E3E1E3 + BaxyBaxzBbxzE2E3E1E3 - BaxzBaxzBbxyE2E3E1E3 - SaSbBayzE2E3 + BaxyBayzBbxyE2E3 + BaxzBayzBbxzE2E3 + BayzBayzBbyzE2E3 - SaBayzBbxyE1E2E2E3 - SbBaxyBayzE1E2E2E3 + BaxzBayzBbyzE1E2E2E3 - BayzBayzBbxzE1E2E2E3 - SaBayzBbxzE1E3E2E3 - SbBaxzBayzE1E3E2E3 - BaxyBayzBbyzE1E3E2E3 + BayzBayzBbxyE1E3E2E3 - SaBayzBbyzE2E3E2E3 - SbBayzBayzE2E3E2E3 + BaxyBayzBbxzE2E3E2E3 - BaxzBayzBbxyE2E3E2E3 = SaSaSb - SaBaxyBbxy - SaBaxzBbxz - SaBayzBbyz + SaSaBbxyE1E2 + SaSbBaxyE1E2 - SaBaxzBbyzE1E2 + SaBayzBbxzE1E2 + SaSaBbxzE1E3 + SaSbBaxzE1E3 + SaBaxyBbyzE1E3 - SaBayzBbxyE1E3 + SaSaBbyzE2E3 + SaSbBayzE2E3 - SaBaxyBbxzE2E3 + SaBaxzBbxyE2E3 - SaSbBaxyE1E2 + BaxyBaxyBbxyE1E2 + BaxyBaxzBbxzE1E2 + BaxyBayzBbyzE1E2 + SaBaxyBbxy + SbBaxyBaxy - BaxyBaxzBbyz + BaxyBayzBbxz - SaBaxyBbxzE2E3 - SbBaxyBaxzE2E3 - BaxyBaxyBbyzE2E3 + BaxyBayzBbxyE2E3 + SaBaxyBbyzE1E3 + SbBaxyBayzE1E3 - BaxyBaxyBbxzE1E3 + BaxyBaxzBbxyE1E3 - SaSbBaxzE1E3 + BaxyBaxzBbxyE1E3 + BaxzBaxzBbxzE1E3 + BaxzBayzBbyzE1E3 + SaBaxzBbxyE2E3 + SbBaxyBaxzE2E3 - BaxzBaxzBbyzE2E3 + BaxzBayzBbxzE2E3 + SaBaxzBbxz + SbBaxzBaxz + BaxyBaxzBbyz - BaxzBayzBbxy - SaBaxzBbyzE1E2 - SbBaxzBayzE1E2 + BaxyBaxzBbxzE1E2 - BaxzBaxzBbxyE1E2 - SaSbBayzE2E3 + BaxyBayzBbxyE2E3 + BaxzBayzBbxzE2E3 + BayzBayzBbyzE2E3 - SaBayzBbxyE1E3 - SbBaxyBayzE1E3 + BaxzBayzBbyzE1E3 - BayzBayzBbxzE1E3 + SaBayzBbxzE1E2 + SbBaxzBayzE1E2 + BaxyBayzBbyzE1E2 - BayzBayzBbxyE1E2 + SaBayzBbyz + SbBayzBayz - BaxyBayzBbxz + BaxzBayzBbxy = SaSaSb - SaBaxyBbxy - SaBaxzBbxz - SaBayzBbyz + SaBaxyBbxy + SbBaxyBaxy - BaxyBaxzBbyz + BaxyBayzBbxz + SaBaxzBbxz + SbBaxzBaxz + BaxyBaxzBbyz - BaxzBayzBbxy + SaBayzBbyz + SbBayzBayz - BaxyBayzBbxz + BaxzBayzBbxy +(SaSaBbxy + SaSbBaxy - SaBaxzBbyz + SaBayzBbxz - SaSbBaxy + BaxyBaxyBbxy + BaxyBaxzBbxz + BaxyBayzBbyz + SaBayzBbxz + SbBaxzBayz + BaxyBayzBbyz - BayzBayzBbxy - SaBaxzBbyz - SbBaxzBayz + BaxyBaxzBbxz - BaxzBaxzBbxy)E1E2 +(SaSaBbxz + SaSbBaxz + SaBaxyBbyz - SaBayzBbxy - SaSbBaxz + BaxyBaxzBbxy + BaxzBaxzBbxz + BaxzBayzBbyz + SaBaxyBbyz + SbBaxyBayzE1E3 - BaxyBaxyBbxz + BaxyBaxzBbxy - SaBayzBbxy - SbBaxyBayzE1E3 + BaxzBayzBbyz - BayzBayzBbxz)E1E3 +(SaSaBbyz + SaSbBayz - SaBaxyBbxz + SaBaxzBbxy - SaSbBayz + BaxyBayzBbxy + BaxzBayzBbxz + BayzBayzBbyz - SaBaxyBbxz - SbBaxyBaxz - BaxyBaxyBbyz + BaxyBayzBbxy + SaBaxzBbxy + SbBaxyBaxz - BaxzBaxzBbyz + BaxzBayzBbxz)E2E3 = SaSaSb + SbBaxyBaxy + SbBaxzBaxz + SbBayzBayz +(SaSaBbxy + 2SaBayzBbxz + BaxyBaxyBbxy + 2BaxyBaxzBbxz + 2BaxyBayzBbyz - BayzBayzBbxy - 2SaBaxzBbyz - BaxzBaxzBbxy)E1E2 +(SaSaBbxz + 2SaBaxyBbyz - 2SaBayzBbxy + 2BaxyBaxzBbxy + BaxyBaxzBbxz + 2BaxzBayzBbyz - BaxyBaxyBbxz - BayzBayzBbxz)E1E3 +(SaSaBbyz - 2SaBaxyBbxz + 2SaBaxzBbxy + 2BaxyBayzBbxy + 2BaxzBayzBbxz + BayzBayzBbyz - BaxyBaxyBbyz - BaxzBaxzBbyz)E2E3 = (Sa^2 + Baxy^2 + Baxz^2 + Bayz^2) * Sb +((Sa^2 + Baxy^2 - Baxz^2 - Bayz^2) * Bbxy + (BaxyBaxz + SaBayz) * 2Bbxz + (BaxyBayz - SaBaxz) * 2Bbyz )E1E2 +((Sa^2 - Baxy^2 + Baxz^2 - Bayz^2) * Bbxz + (BaxyBaxz - SaBayz) * 2Bbxy + (BaxzBayz + SaBaxy) * 2Bbyz )E1E3 +((Sa^2 - Baxy^2 - Baxz^2 + Bayz^2) * Bbyz + (BaxyBayz + SaBaxz) * 2Bbxy + (BaxzBayz - SaBaxy) * 2Bbxz )E2E3