Interpolation of rotations

An orientation can be characterized by rotating a standard pose bivector. Here the orientations are characterized by the rotors R_A (blue) and R_B (red):

R_A = exp(-I3.v_A Phi_A)/2, R_B = exp(-I3.v_B Phi_B)/2,

where v_A and v_B are vectors perpendicular to the planes of rotations used for characterizing R_A and R_B. Phi_A and Phi_B are the corresponding scalar angles of rotation and I3 is the three-dimensional pseudoscalar (volume element). Dividing R_A/R_B we get the total rotor which rotates the orientation R_A into R_B. Taking the logarithm, dividing by n (the number of desired increments) and exponentiating again, we get the incremental rotor:

R_inc = exp(log(R_A/R_B)/n).

The brown vector is the angular vector I3.log(R_A/R_B)/n perpendicular to the plane of R_inc. The orange disc is the bivector angle log(R_A/R_B)/n of the rotation increment.

You can change the origin, the orientations R_A and R_B and even the shape and size of the standard pose bivector by interactively dragging the bright red points. Because Cinderella is inherently two dimensional software the construction will sometimes get screwed up. Simply press the refresh button of your browser to start anew.

Please enable Java for an interactive construction (with Cinderella).

The basic idea for this applet stems from the "DEMOinterpolation" in Dorst, Mann and Bouma's geometric algebra MATLAB tutorial GABLE.

[ GA with Cinderella ]

Soli Deo Gloria. Created with Cinderella by E. Hitzer (Fukui).