Skip to content
/ ega Public

PGA mathematics library

Notifications You must be signed in to change notification settings

ickk/ega

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 allowing ega, 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.