tessellation

Build Status Codecov Cargo License: GPL-3.0 Downloads

Tessellation implements Manifold Dual Contouring.

Tessellation is a library for 3d tessellation, e.g. it will create a set of triangles from any implicit function of volume. Tessellation implements Manifold Dual Contouring.

Examples

Create a unit sphere and tessellate it:

```rust extern crate nalgebra as na; extern crate tessellation; //! struct UnitSphere { bbox : tessellation::BoundingBox } //! impl UnitSphere { fn new() -> UnitSphere { UnitSphere { bbox: tessellation::BoundingBox::new(&na::Point3::new(-1., -1., -1.), &na::Point3::new( 1., 1., 1.)) } } }

impl tessellation::ImplicitFunction for UnitSphere { fn bbox(&self) -> &tessellation::BoundingBox { &self.bbox } fn value(&self, p: &na::Point3) -> f64 { return na::Vector3::new(p.x, p.y, p.z).norm() - 1.0; } fn normal(&self, p: &na::Point3) -> na::Vector3 { return na::Vector3::new(p.x, p.y, p.z).normalize(); } }

let sphere = UnitSphere::new(); let mut mdc = tessellation::ManifoldDualContouring::new(&sphere, 0.2, 0.1); let triangles = mdc.tessellate().unwrap(); ```