4 ms·
What a wonderfully crafted piece. But a part of me can't refrain from saying it would have looked way more elegant and succinct in 3D Projective Geometric Algeb
by BenoitP 2y ago
What a wonderfully crafted piece. But a part of me can't refrain from saying it would have looked way more elegant and succinct in 3D Projective Geometric Algebra.
Most of the last sections (all intersections) feel like corner cases, when in PGA they are one and the same.
- ngruhn 2y agoI keep hearing this and I'm very interested. But most recommended resources I've seen so far are more targeted at Physicists. Any good text book for CS people? Edit: nevermind, read in other comments that https://bivector.net/ https://bivector.net/ has a ton of resources.
- sebastos 2y agoFor those interested, this appears to be a really high quality library that provides a 3D PGA C++ API: https://github.com/jeremyong/klein https://github.com/jeremyong/klein I've always wanted to find an excuse to rebuild some projects at work around this.
- at_compile_time 2y agoYup. Geometric algebra has one equation for each of: projection, rejection, join (e.g., two points into a line), and meet (e.g., two planes interacting at a line). The algebraic expression is the same regardless of the elements you're working with or the space you're working in. You get transformations too, as easy as M=b/a, where M can be applied to any element in the algebra by taking the square root and applying double-sided multiplication such that b = √M a ~√M, where tilde represents the reverse. These transformations are isomorphic to complex numbers, quaternions, and hypercomplex numbers, and understanding them makes other explanations of these concepts feel inadequate and woefully un-geometric. Add in logarithms and the exponential map for these transformations and we can perform linear interpolation between states and parametrize transformations. I'm just a motivated amateur and I can do all of these things. The vector algebra I learned in engineering is useful, and it's often all I need for simple 3-dimensional problems, but it's just shy of something far more powerful and far more general.