Aegolius is the public repository for the Python package SPOMSO.
SPOMSO is a free and open-source software under the GNU LGPL. This python package is intended for procedural construction of geometry and vector fields on the foundation of Signed Distance Functions (SDFs).
- Geometry can be defined in 2D and 3D.
- Object-oriented and function-oriented approach to defining geometry, with pre-defined 2D and 3D objects.
- Built-in Euclidian Transformations (translation, rotation, scaling)
- Point clouds can be converted into SDFs and vice-versa.
- Euclidian transformations for SDFs and point clouds.
- In total 40 possible modifications of SDFs, including:
- extrusion, revolution, twist, bend, elongation
- mirror, symmetry, rotational symmetry
- finite and infinite instancing
- instancing along lines, segmented lines and parametric curves
- surface-to-volume and volume-to-surface operations
- various post-processing functions
- custom user-defined modifications
- In total 11 ways to combine different geometric objects together - different implementations of:
- union, intersection, subtraction
- smooth union, smooth intersection, smooth subtraction
- Support for 2D and 3D vector fields.
- Object-oriented and function-oriented approach, with pre-defined vector fields.
- Vector fields can be defined from scalar fields/SDFs or with custom functions.
- Modifications and transformations, including:
- addition, subtraction, rescaling
- element-wise rotations in the polar and azimuthal directions
- element-wise rotations around arbitrary axes
- revolutions of 2D vector fields around one of the principal axes
There are 25 2D examples and 16 3D examples showing how to construct geometry and use many of the features included in SPOMSO. There are 5 Vector examples showing how to construct and manipulate vector fields. For each of the examples there is both a python script (.py) version and an interactive python notebook (.ipynb) version.
See aegolius_install.ipynb
in the Examples.
In the future it will be possible to run the code on a GPU from within Python, with support for Automatic Differentiation based on JAX.
I kindly request that you cite the latest archived repository of Aegolius (SPOMSO) on Zenodo in any published work for which you used SPOMSO.
Official website with the Documentation.
I acknowledge the support of the Faculty of Mathematics and Physics at University of Ljubljana, and Institute Jožef Stefan. Special thanks to my colleagues for helpful discussions.