> 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?
