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 次下载
79KB
2K SLoC
细分
细分是一个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.0或MIT许可证下许可。除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,包括在本软件包中包含的贡献,均将按照上述方式双重许可,不附加任何额外条款或条件。
依赖项
~5.5MB
~106K SLoC