I made a #Clojure port of this gorgeous coordinate free technique for drawing circular arc splines in PGA2D using #geometer. It will be included in the examples for the library…

https://www.youtube.com/watch?v=m317-cYs8q4

A screenshot of the source code for the spline algorithm. It compares quite favorably to any way you might do this without #geometricalgebra.
@jack When do you plan to release this? Can't wait to take it for a spin.
Jack Rusher (@[email protected])

@[email protected] I’m blocked. The examples use another library I co-maintain called Quil that depends on Processing, which is getting ready to drop a new release that makes releasing new versions of Quil way easier (current version of Quil is broken, I’m using a patched version locally). When they drop the new P5, I’ll ship the new Quil, then this library. In the meantime, I’m just amusing myself making these little examples…

berlin.social
@jack that is so cool!!!
@jack Cool! Does it work in 3d? I previously tried to adapt the code for the 2d curve from Steven's slides to work in 3d in the ganja.js playground, but got kinks at control points instead of continuous curves.
@vez Hey Elliot! Good to hear from you :) The computational code is dimension agnostic, but the display code is currently 2D by accident. I'll fix it up so it works for 3D too.
@vez Here's the interface modified to work in 3D ☺️
@jack Sweet! Did you only move from a 2,0,1 (two positive dimensions, one zero dimension) Algebra to a 3,0,1 Algebra to get from 2D to 3D? I wonder if you might know if I'm doing something wrong in my ganja.js code. Excited to try your library.
@jack Oh! I figured it out! I needed to negate the rotors `R[i]`, not sure why still though (and it causes the kinks in the 2D case). Maybe because of how the orbit function is implemented? Not sure.
@jack comparing with your clojure code (nice code and comments, ty), the body of Enkimute's ganja.js JS looks like a pretty exact translation (assuming the binary operator `|` takes the grade 1 part of the geometric product). Not sure what is up...
@vez The big difference in my version vs what he shows in the video is that I added a coordinate free implementation of Rom-Catmull to calculate the first center because I didn’t like the idea of providing one manually. This means I can pass some arbitrary points and get a spline back…
@vez Glad you got it! 😊
@vez Btw that orbit function hides something nice: that shape of log/exp against any versor gives interpolation/arbitrary sampling, which is another thing that otherwise takes more code and has more special cases