> The definition of a Rotor is identical to a geometric product 
> (scalar+bivector) so returning one as something like geometric(v1, v2) is not 
> inherently wrong but it does seem like it could be misleading because it 
> would mean the Rotor becomes the general object used to store any geometric 
> products.

That's not exactly right. The product of two vectors is a rotor, and the 
product of two rotors is a rotor, but the product of a vector with a rotor is 
NOT a rotor. In general, a geometric product results in a multivector. In 2D, a 
multivector has a scalar, vector, and bivector part. In 3D it also contains a 
trivector part:

2D: (a) + (xe0 \+ ye1) + (be01)

a is the real part, x,y are the vector part, b is the imaginary part. You 
should think of the units like "e0 is 1 meter x-ward, e1 is one meter y-ward" 
and "e01 is one square meter in the xy-plane.

3D: (a) + (xe0 \+ ye1 \+ ze1) + (be12, ce02, de01) + (fe012)

a is the real part, x,y,z are the vector part, b,c,d are the imaginary part 
(note 3 coordinates because it's a quaternion!).

You should think of the new units like "e2 is one meter z-ward", "e02 is one 
square meter in the xz-plane, e12 is one square in the yz-plane", "e012 is one 
cubic meter in the xyz-space".

* * *

The fundamental problem here, to my mind, is "what is multiplication supposed 
to mean?" Do you want your library to feel like linear algebra or geometric 
algebra? 

Reply via email to