3 ms·
Some GA libraries[1][2] define types for the different kind of objects (grades), although they are time consuming to implement and fixed in the number of dimens
by DrDroop 3y ago
Some GA libraries[1][2] define types for the different kind of objects (grades), although they are time consuming to implement and fixed in the number of dimensions they describe. But you are right that the most implementation combine all grades into a single array, but the biggest problem with those is that the size of the array in 2^n with n the number of dimensions. To work in 3D you probably want to use R(3,0,1) for all rigid transformation or even R(4,0,1), but that brings the total number of 16 or 32 floats to just represent a point.
Imho the biggest problem in GA for CS is the lack of a good ecosystem of tools. Ganja.js is nice, probably the best in class when it comes to API design, but is completely useless when trying to work with other JS libraries because ganja.js has it's own weird transpiler.
[1]https://www.jeremyong.com/klein/ https://www.jeremyong.com/klein/
[2]https://github.com/wrnrlr/g3 https://github.com/wrnrlr/g3
- nextaccountic 3y ago> Some GA libraries[1][2] define types for the different kind of objects (grades) That's nice! This reminds of me things like, linear algebra libraries that will type-check matrices so that a 2x2 matrix can't be added to a 2x3 matrix (but then you can have a dynamic matrix that will error only in runtime), like https://nalgebra.org/ https://nalgebra.org/ and others.
- Lichtso 3y agoThe GA community in general is very small. So yes, tooling could be better, but IMO that is not even the problem. The lack of understanding how to use it is, because GA is not explicitly taught in schools or universities. I have written a compiler which generates SIMD ready typed code for the desired GAs. You can then use that output as a normal library for your application. https://github.com/Lichtso/geometric_algebra https://github.com/Lichtso/geometric_algebra