Continuing our investigation of generic compile-time synthesis of geometric spaces from last year's conference, we formalize our approach to designing a spatial computation engine using category theory and functional programming paradigms. We examine cartesian product spaces and develop a theory of computable movements, categorizing our geometric structs as we go, providing a case-study lesson in category theory, geometric algebra, differential geometry, C++ template metaprogramming, and generic lambdas. Specifically, we use C++14 to combine two formalisms: the first is Geometric Algebra, a mathematical system for multidimensional synthesis and analysis. It serves as a unifying substrate for modeling physical relationships in any dimension, and within any ambient metric. The second, Functional Programming, organizes the system of constructions, coincidences, and causes that generate our geometric world. With this union of form and process we demonstrate how morphing structures - kinematic chains, curved-crease origami, knotted weaves and braids, organic forms - can be deductively modeled by structured morphisms - algebras, monadic continuations, declarative constraint networks, and metaprogramming techniques. Developing these programmable abstractions into a C++ template library, we achieve a dimensional fluency - an ability to solve complex geometric problems visually and intuitively. The result is a compact, expressive and extendable system for articulating spatial configurations, and a potential contribution to the Boost library.
Slides