Multi-purpose projective solver for geometric and structural problems. Written in Cython to go wicked fast. Currently only tested against Python3. Based on ideas from ShapeOp and Dynamic Relaxation.
Pymaxion utilizes Cython, so it must be compiled before running test cases. A minimal Dockerfile is provided that avoids any OS/missing compiler issues if you want to get up and running quickly!
To compile with OpenMP for potential parallelism, you must first install gcc
, (I did this using Homebrew). To compile from terminal, make sure to alias the correct gcc, as Apple's default CLang may not support OpenMP.
cd pymaxion/src
pip3 install -r requirements.txt
python3 setup.py build_ext --inplace
Once you've built the package, you should be able to import modules with the same hierarchy as you would any Python package by adding ./pymaxion/src
to your $PYTHONPATH
.
The initial development of this project, touching on Cython performance, profiling Cython, and developing Blender add-ons using C-extensions generated from Cython, was presented at Pycon 2022. The slide deck from the presentation is here.
Other relevant development information and process documentation can be found in the following blog posts: