tBuLi / kingdon

A symbolically optimized and pythonic Clifford (geometric) algebra library named after none other than William Kingdon Clifford.
https://tbuli.github.io/teahouse/
MIT License
45 stars 5 forks source link

Custom basis and named algebras #16

Open tBuLi opened 1 year ago

tBuLi commented 1 year ago

We would like to support custom bases, e.g. starting from e0 for PGA's.

Moreover, we would like the user to be able to provide custom basis, and to start an algebra simply from a name, e.g. "3DPGA".

Check with ganja.js and Clifford for their current settings.

thejibz commented 11 months ago

First of all, THANK YOU for your awesome work !

TL;DR: Allowing something like locals().update(alg.cg_blades) where cg_blades just replace e02 with e20 in 2DPGA to fit for computer graphics (hence the "cg" prefix) where the "Y" axis starts from screen's top-left corner.


This is the convention in use at BiVector.net for example: https://bivector.net/tools.html?p=2&q=0&r=1 Or by Eric Lengyel overhere (though he starts index at 1, so e31 for e20): https://rigidgeometricalgebra.org/wiki/index.php?title=Rigid_Geometric_Algebra_for_2D_Space

Of course, this is not a top priority feature, more of an idea I got when using your lib to check the results of my own CG GA (toy)lib for Java.

Anyway, thank you again for sharing your work 👍

tBuLi commented 6 months ago

Hi @thejibz, glad to hear you are enjoying this work :). Yes that is definitely on the todo list, although with a different syntax. My plan is that you can also start an algebra from a name rather than a signature, e.g. "3DPGA". This will then give the bivector.net ordering.