5 个不稳定版本

0.3.1 2024 年 2 月 9 日
0.3.0 2024 年 2 月 9 日
0.2.0 2024 年 2 月 9 日
0.1.1 2024 年 2 月 7 日
0.1.0 2024 年 2 月 7 日

290数学

每月 28 次下载

MIT 许可证

1MB
22K SLoC

C 21K SLoC // 0.3% comments Rust 1.5K SLoC // 0.0% comments Prolog 59 SLoC

qhull-rs

安全的 Rust Qhull 绑定

Crates.io Version Build Status docs.rs

Qhull 计算凸包、Delaunay 三角剖分、Voronoi 图、关于点的半空间交集、最远点 Delaunay 三角剖分和最远点 Voronoi 图。源代码在 2-d3-d4-d 和更高维度上运行。Qhull 实现了用于计算凸包的 Quickhull 算法。它可以处理浮点运算中的舍入误差。它计算体积、表面积和凸包的近似值。

Qhull 不支持非凸表面的三角剖分、非凸对象的网格生成、9-D 及以上中等大小的输入、alpha 形状、加权 Voronoi 图、Voronoi 体积或约束 Delaunay 三角剖分。

    - Qhull 主页 (检索日期:2024-09-02)

快速入门

cargo run --example hull

二进制文件

qhull-rs 从原始 Qhull 源代码提供了一些二进制目标

  • qconvex
  • qdelaunay
  • qhalf
  • qhull
  • qvoronoi
  • rbox

要获取它们

cargo install qhull
qhull

用法

将此添加到您的 Cargo.toml

qhull = "0.3"

对于当前的开发版本

[dependencies]
qhull = { git = "https://github.com/LucaCiucci/qhull-rs" }

示例

2D 凸包

use qhull::Qh;

let qh = Qh::builder()
    .compute(true)
    .build_from_iter([
        [0.0, 0.0],
        [1.0, 0.0],
        [0.0, 1.0],
        [0.25, 0.25],
    ]).unwrap();

for simplex in qh.simplices() {
    let vertices = simplex
        .vertices().unwrap()
        .iter()
        .map(|v| v.id())
        .collect::<Vec<_>>();

    println!("{:?}", vertices);
}

有关更多示例,请参阅 examples 模块/文件夹。

许可证

此 crate 使用 Qhull,请在使用此 crate 时参阅 Qhull 许可证 以获取更多信息。

依赖项

~0–2MB
~40K SLoC