timschmidt/csgrs

3/5 🧩 软硬件结合 已发布
timschmidt 128 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5
timschmidt/csgrs

项目简介

Multi-modal constructive solid geometry kernel in Rust


csgrs 是一个用 Rust 编写的快速、可选多线程的构造实体几何(CSG)库。它的核心功能是围绕布尔运算(并集、差集、交集、异或)构建的,支持多种不同的内部几何表示。项目提供了数据结构和方法来构建 2D 和 3D 几何体,语法风格类似于 OpenSCAD,旨在通过集成 Dimforge 生态系统(如 nalgebra、Parry 和 Rapier)以及 geo 库,实现轻量级且功能丰富的目标。csgrs 还包含许多用于生成 CNC 刀具路径的函数,并且可以针对 32 位或 64 位浮点数以及 WASM 进行构建,依赖项全部为 Rust 且几乎都是可选的。

标签

项目特点

**快速且可选多线程**:利用 Rust 的并发能力,支持多线程加速布尔运算,也可单线程运行以简化依赖。
**类似 OpenSCAD 的语法**:提供直观的 API 来构建和组合几何体,降低学习曲线。
**多种几何表示**:支持 BSP 树、多边形网格等多种内部表示,灵活适应不同场景。
**集成 Dimforge 生态**:与 nalgebra(线性代数)、Parry(碰撞检测)、Rapier(物理引擎)无缝协作,扩展性强。
**CNC 刀具路径生成**:内置函数可直接从 CSG 模型生成刀具路径,适合数字制造。
**跨平台与 WASM 支持**:可针对 32/64 位浮点数编译,并支持 WebAssembly,在浏览器中运行。

技术规格

编程语言
最低 Rust 版本
浮点精度
核心功能
几何表示
多线程支持
WASM 支持
外部依赖
许可证

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
csgrs 1 Rust crate,主库
nalgebra 1 线性代数,用于矩阵运算
parry3d 1 3D 碰撞检测
rapier3d 1 3D 物理引擎
geo 1 2D 几何操作
Rust 编译器 1 需要 rustc 1.70+
Cargo 1 Rust 包管理器
wasm-pack 1 用于 WASM 构建

能力画像

**记忆与知识检索**:3/5 — 项目文档和示例提供了基础用法,但高级功能需查阅源码或 Dimforge 生态文档。
**动手与操作**:4/5 — 通过类似 OpenSCAD 的 API 可快速构建几何体,CNC 路径生成直接输出可制造数据。
**编程与算法**:5/5 — 核心是 Rust 实现的布尔运算算法,涉及 BSP 树、多线程优化,适合深入算法研究。
**设计与建模**:4/5 — 支持 2D/3D 几何体组合,适合参数化建模,但缺乏图形界面,需代码驱动。
**实验与调试**:3/5 — 依赖 Rust 的编译时检查和测试框架,但几何体可视化需额外工具(如导出为 STL 查看)。
**协作与分享**:2/5 — 开源项目,可通过 GitHub 提交 Issue/PR,但社区规模较小(128 星)。
**学习与研究**:4/5 — 适合学习 CSG 算法、Rust 并发编程、Dimforge 生态集成,代码结构清晰。
**系统集成**:4/5 — 可嵌入 Rust 项目,支持 WASM 用于 Web,与 nalgebra/Parry/Rapier 集成扩展性强。

所需技能

Rust 编程基础(所有权、生命周期、trait) 理解构造实体几何(CSG)概念(布尔运算、BSP 树) 熟悉 Cargo 和 Rust 依赖管理 可选:了解 Dimforge 生态(nalgebra、Parry、Rapier) 可选:WebAssembly 构建经验(如需 WASM 部署) 可选:CNC 加工或数字制造基础知识(如需使用刀具路径功能)

适用场景

参数化 3D 建模工具开发(类似 OpenSCAD 的 Rust 实现)
数字制造中的刀具路径生成(CNC 铣削、3D 打印支撑计算)
游戏或仿真中的碰撞体生成(结合 Parry/Rapier)
教育用途:学习 CSG 算法和 Rust 并发编程
Web 端 3D 几何编辑器(通过 WASM 部署)
机器人或自动化中的几何推理(如抓取规划中的形状操作)