This repository contains (work-in-progress) sparse-implementations of 3D Projective Geometric Algebra, intended for use in computer graphics.
There is an implementation based on rigidgeometricalgebra.org (rga
), and
there is also an implementation largely based on PGA4CS.pdf on bivector.net
(ega
).
There is basically complete test coverage, and most of the important operators
have been implemented. While rga
is in a more "complete" state compared to
ega
it would be possible to use either of the libraries, with the following
caveats:
- Some higher-level/compound operators (sandwich products, &c) do not yet have their own sparse implementations;
- there is currently no feature enabling explicit SIMD optimisations;
- some desirable 3rd party traits do not yet have implementations (bytemuck, serde, rand, mint);
- aside from the included unit tests, to my knowledge there has been no extensive use of these libraries in production code or otherwise.
Other considerations:
- While
mint
serves as a light-weight common interchange interface for traditional gamedev math types, it occurs to me that (projective) geometric-algebra libraries might be better served by their own interchange crate; there-by allowingega
,rga
, and other geometric algebra implementations to co-exist.
As indicated in the LICENSE
files of the respective projects, each library is
distributed under permissive Apache2, MIT, and Zlib licenses; unless explicitly
stated otherwise, any contributions you intentionally submit for inclusion in
these works shall be licensed accordingly.