Thanks @cgunn3. I found “On the Homogeneous Model of Euclidean Geometry” disambiguated things nicely. Although to fully understand the subtleties between the polarity and duality operators/maps I’d need to study the references from that paper.
What I have done is to provide what I hope is a flexible enough set of methods/functions to allow a user of my package to create operators for a wide range of Geometric Algebras. There is the option to create both dual and standard generating 1-vector bases, with types “spelled” eᵢ
and eⁱ
and equipped them with an operator to lower and raise indices directly.
raise(k)*inverse(raise(dual(1.0)))
should give you ( something isomorphic to? ) the J
operator. Transiently, the signs for my dual(k)
differ from ganja.js in some metrics, but agree on dual(dual(k))
edit: removed description of polarity map