A geometry engine from first principles - the first three years of a six month project.
2023-08-17 , N:O:R:T:x
Language: English

Three years ago, I started what I thought would be a six month project to implement some CAM software for 3D printing purposes, without using any of the existing geometry kernels. How hard can it be, right? I made some choices that seem weird but were done for very good reasons, and ended up implementing some things that are actually new and exciting. Here’s the story of the adventure so far.


As the adoptive maintainer of one piece of 3D printing toolchain (ImplicitCAD, a programmable 3D modelling tool), I made the possibly unwise decision to implement another part of the toolchain - HSlice, a slicer. For a number of reasons I’ll get into in detail later, I decided to not use any of the existing multi-million-LoC geometry kernels, to implement the whole thing from first principles in Haskell, and to use some exciting new mathematics. All of those decisions were made for good reasons, and all of them came back to bite me. I’m here to tell you about what I’ve built so far, how I ended up as the singular intersection of these technologies, and how much I hate floating point. Then, I’ll tell you what it’s like implementing things whose only documentation is research papers, with math developed this century and algorithms that are still in development now. I’ll tell you about some incredibly cool algorithms involving crashing Austrian motorcycles and attempt to recruit you to work on this stuff too, for free.


Content Notes

Haskell, 3D printing, Projective Geometric Algebra, Floating Point Units, Property Testing. This is a step in the direction of a haskell based slicing system, for 3D printing.