Skip to main content
SPOMSO: geometry and vector fields from signed distance functions

Aegolius is the public repository for the Python package SPOMSO.

SPOMSO is free and open-source software distributed under the GNU LGPL. This package is designed for the procedural construction of geometry and vector fields based on Signed Distance Functions (SDFs).

PyPI version License Docs DOI GitHub stars


Key Features - SDFs

  • Support for both 2D and 3D geometry.
  • Object-oriented and functional approaches to defining geometry with pre-defined 2D and 3D objects.
  • Built-in Euclidean Transformations (translation, rotation, scaling).
  • Seamless conversion between point clouds and SDFs.
  • Over 50 built-in SDF modifications, including:
    • Extrusion, revolution, twist, bend, and elongation.
    • Mirroring, symmetry, and rotational symmetry.
    • Finite and infinite instancing (along lines, segmented lines, and parametric curves).
    • Surface-to-volume and volume-to-surface operations.
    • Various post-processing functions
    • Custom user-defined modifications.
  • 13 distinct methods for combining geometric objects, including different implementations of:
    • Boolean operations (union, intersection, subtraction).
    • Smooth operations (smooth union, smooth intersection, smooth subtraction).

Key Features - Vector Fields

  • Support for 2D and 3D vector fields.
  • Object-oriented and functional approaches with pre-defined vector fields.
  • Ability to define vector fields from scalar fields/SDFs or custom functions.
  • Extensive modifications and transformations, including:
    • Addition, subtraction, and rescaling.
    • Element-wise rotations in polar and azimuthal directions.
    • Element-wise rotations around arbitrary axes.
    • Revolutions of 2D vector fields around principal axes.

Key Features - Automatic Differentiation

A JAX implementation is available for nearly all SDFs, modifications, combinations, and post-processing functions. This enables computationally demanding operations to be offloaded to the GPU, with full support for Automatic Differentiation.

JAX is an optional dependency and will not be installed by default.


Examples

The repository contains a wide variety of use cases:

All examples are provided in both Python script (.py) and interactive Jupyter Notebook (.ipynb) formats.

There are also LLM Examples demonstrating how to use various (open-source) LLMs to generate complex geometry.


Installation

The simplest method to install SPOMSO is via pip install spomso.

For more information, please refer to aegolius_install.ipynb in the Examples folder.

Citing

If you use SPOMSO in your research, please cite the latest archived repository of Aegolius on Zenodo:

DOI

Documentation

Access the official Documentation here.

Acknowledgements

This work was supported by the Faculty of Mathematics and Physics at the University of Ljubljana and the Institute Jožef Stefan. Special thanks to my colleagues for their helpful discussions.

Metadata

Release files for SPOMSO 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SPOMSO 1.6.0
File Size Uploaded
spomso-1.6.0.tar.gz 71.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SPOMSO 1.6.0
File Interpreter ABI Platform
spomso-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 168.1 kB

Release files / spomso-1.6.0.tar.gz

Download URL spomso-1.6.0.tar.gz
Size 71.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b0a12764bf003e160ca4cb00bb3a439849d1be0ff6c42da18464228b34aa4831
BLAKE2b-256 checksum
How to use checksums
d91fde69ddb52d653d85838d6ba5e271722210cafaee67309b5426e2dd4aebc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / spomso-1.6.0-py3-none-any.whl

Download URL spomso-1.6.0-py3-none-any.whl
Size 96.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
366ce9f163dd8beb3584c44b189ca451f24688b37ee379a2c828a10c61953d1e
BLAKE2b-256 checksum
How to use checksums
844875ec87d4ace423c28a4026ce703db48aa0dc41d01989178db6cde0f4df3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page