Files
ViewDesignEngine/README.md
T
茂之钳 1ac5a27d4c
CI / Build & Test (push) Failing after 28s
CI / Release Build (push) Failing after 31s
release: v1.0.0 — 首个稳定版本,M4 全部里程碑完成
2026-07-24 03:08:13 +00:00

92 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ViewDesignEngine — 高性能 CAD 计算几何算法库
C++17 实现的计算几何引擎。提供曲线曲面建模、网格处理、布尔运算、空间索引、碰撞检测等底层几何计算能力。
[![Tests](https://img.shields.io/badge/tests-143%2F143-brightgreen)](tests/)
[![Version](https://img.shields.io/badge/version-1.0.0-blue)](CHANGELOG.md)
[![C++](https://img.shields.io/badge/C%2B%2B-17-blue)](CMakeLists.txt)
## 快速开始
```bash
# 基础构建 + 测试
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` | BVHSAH)、Octree、KD-Tree、R-TreeSTR 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 面、离散化 |
## 快速示例
```cpp
#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/`](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`](docs/benchmark-report.md)
## 工程指标
- **源文件**: 7,800+ 行
- **头文件**: 2,300+ 行
- **测试用例**: 143 个(100% 通过)
- **编译**: 零错误零警告(GCC 11/Clang 16+
- **版本**: v1.0.0
## 文档
- [开发计划](docs/00-开发计划.md) — 版本规划 + Sprint 划分 + 里程碑
- [文档目录](docs/00-文档目录.md) — 完整文档索引
- [基准报告](docs/benchmark-report.md) — 性能数据
- [构建指南](docs/06-部署维护/01-构建指南.md)
- [API 参考](docs/06-部署维护/02-API参考.md)
## 许可证
Apache License 2.0 — 详见 [LICENSE](LICENSE)