[][src]Crate tessellation

tessellation is crate for creating polygons from implicit functions or volumes. It uses Manifold Dual Contouring.

Examples

Create a unit sphere and tessellate it:

extern crate nalgebra as na;
extern crate tessellation;

struct UnitSphere {
  bbox : tessellation::BoundingBox<f64>
}

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<f64> for UnitSphere {
   fn bbox(&self) -> &tessellation::BoundingBox<f64> {
     &self.bbox
   }
  fn value(&self, p: &na::Point3<f64>) -> f64 {
    return na::Vector3::new(p.x, p.y, p.z).norm() - 1.0;
  }
  fn normal(&self, p: &na::Point3<f64>) -> na::Vector3<f64> {
    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();

Structs

BoundingBox

3D Bounding Box - defined by two diagonally opposing points.

ManifoldDualContouring

Struct containing all the intermediary state for the different stages of tessellation.

Mesh

Mesh that will be returned from tessellate.

Traits

AsUSize

Trait which allows to convert Self to usize, since To is not implemented by f32 and f64.

ImplicitFunction

Trait to be implemented by functions that should be tessellated.