GithubHelp home page GithubHelp logo

peterropac / aegolius Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 19.55 MB

Signed Distance Function (SDF) based Python package for procedural construction of geometry.

License: GNU Lesser General Public License v3.0

Jupyter Notebook 97.01% Python 2.99%
geometry geometry-algorithms procedural procedural-generation python signed-distance-fields signed-distance-functions vector vector-fields vectorfield

aegolius's Introduction

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).

Key Features - 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

Key Features - Vector Fields

  • 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

Examples

There are 24 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.

Install

See aegolius_install.ipynb in the Examples.

Future developments

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.

Citing

I kindly request that you cite the latest archived repository of Aegolius (SPOMSO) on Zenodo in any published work for which you used SPOMSO.

DOI

Documentation

Official website with the Documentation.

Acknowledgements

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.

aegolius's People

Contributors

peterropac avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.