14次发布

0.8.2 2020年10月19日
0.8.1 2020年10月19日
0.7.5 2020年10月17日
0.7.2 2019年12月2日
0.5.3 2018年5月6日

#1156算法

每月 44 次下载

Apache-2.0 OR MIT

79KB
2K SLoC

细分

Build Status Codecov Cargo License: Apache-2.0 License: MIT Downloads

细分是一个3D细分库,例如,它将从任何体积隐函数创建一组三角形。细分实现了流形双曲边界

示例

创建一个单位球体并对其进行细分

use nalgebra as na;
//!
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();

许可证

根据您的选择,在Apache许可证,版本2.0MIT许可证下许可。
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,包括在本软件包中包含的贡献,均将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~5.5MB
~106K SLoC