2772c25aef09bef28f0db85769f9925d9e74abe7
ViewDesignEngine — 高性能 CAD 计算几何算法库
C++17 实现的计算几何引擎。提供曲线曲面建模、网格处理、布尔运算、空间索引、碰撞检测等底层几何计算能力。
快速开始
# 基础构建 + 测试
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
cd build && ctest --output-on-failure
# 启用性能基准测试
cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_BENCHMARKS=ON
cmake --build build -j$(nproc)
cd build && ctest -R bench_
依赖: CMake ≥ 3.16, C++17 编译器, Eigen 3 (自动下载)
模块
| 模块 | 命名空间 | 说明 |
|---|---|---|
| foundation | vde::foundation |
数学类型、公差系统、精确谓词、OBJ/STL/PLY/glTF I/O |
| core | vde::core |
点/线/面/三角形/AABB、几何变换、距离计算、多边形、凸包、ICP |
| curves | vde::curves |
Bezier/B-Spline/NURBS 曲线与曲面、求值/求导、自适应细分 |
| mesh | vde::mesh |
半边网格、Delaunay 2D/3D、QEM 简化、Laplacian/Taubin/HC 平滑、网格质量、Marching Cubes、测地线 |
| spatial | vde::spatial |
BVH(SAH)、Octree、KD-Tree、R-Tree(STR bulk-loading) |
| boolean | vde::boolean |
2D Sutherland-Hodgman 裁剪、3D 网格布尔(union/intersection/difference/sym_diff) |
| collision | vde::collision |
GJK、SAT、Möller-Trumbore 射线-三角形、三角-三角交线 |
| brep | vde::brep |
B-Rep 拓扑建模(box/sphere/cylinder)、NURBS 面、离散化 |
快速示例
#include <vde/core/point.h>
#include <vde/curves/bezier_curve.h>
#include <vde/mesh/delaunay_2d.h>
using namespace vde::core;
using namespace vde::curves;
// 创建三次 Bezier 曲线求值
BezierCurve curve({
{0, 0, 0}, {2, 3, 0}, {5, -1, 0}, {7, 0, 0}
});
auto pt = curve.evaluate(0.5); // t=0.5 处的点
auto dt = curve.derivative(0.5); // 一阶导
// 2D Delaunay 三角剖分
std::vector<Point2D> pts = {{0,0},{1,0},{1,1},{0,1},{0.5,0.5}};
auto mesh = mesh::delaunay_2d(pts); // 自动三角化
更多示例见 examples/ 目录。
性能基准
| 操作 | 规模 | 时间 | 吞吐 |
|---|---|---|---|
| Bezier eval | 100K | 2.66 ms | 38M evals/s |
| BVH 构建 | 1K tris | 245 µs | 4.1M tris/s |
| Delaunay 2D | 1K pts | 3.96 ms | 254K pts/s |
| 3D Boolean (Union) | ~100 faces | 2.05 ms | 495 ops/s |
完整基准报告:docs/benchmark-report.md
工程指标
- 源文件: 7,800+ 行
- 头文件: 2,300+ 行
- 测试用例: 143 个(100% 通过)
- 编译: 零错误零警告(GCC 11/Clang 16+)
- 版本: v1.0.0
文档
许可证
Apache License 2.0 — 详见 LICENSE
Description
Releases
1
ViewDesignEngine v1.0.0
Latest
Languages
C++
98%
C
0.9%
CMake
0.6%
Python
0.4%