[ANN] ManifoldBindings.jl

I am happy to announce ManifoldBindings.jl. From the README:

ManifoldBindings.jl

Build Status
Coverage

This package provides inofficial julia bindings for manifold a fast and robust mesh library.
It provides low level 1:1 bindings around the official C-API in JuliaBindings.CAPI and
also a memory safe high level api. The high level API is not yet fully implemented
and might change in future.

Usage

using StaticArrays
import ManifoldBindings as MB

# use a predefined mesh
radius = 1.1
nseg = 10
sphere = MB.Manifold_sphere(radius, nseg)

# create a custom mesh
vertices = [
    @SVector[-1.0, -1.0, 1.0],
    @SVector[-1.0, 1.0, -1.0],
    @SVector[1.0, -1.0, -1.0],
    @SVector[1.0, 1.0, 1.0],
]
triangles = [
    @SVector[0x00000003, 0x00000001, 0x00000002], 
    @SVector[0x00000001, 0x00000004, 0x00000002], 
    @SVector[0x00000003, 0x00000004, 0x00000001], 
    @SVector[0x00000004, 0x00000003, 0x00000002]
   ]
tetrahedron = MB.Manifold(vertices, triangles) # a custom tetrahedron

# get information out of a manifold
@assert MB.collect_vertices(tetrahedron)  == vertices
@assert MB.collect_triangles(tetrahedron) == triangles

# use a mesh boolean
m = MB.difference(tetrahedron, sphere)

# plotting support
using GLMakie
plot(m)

image

5 Likes