136 lines
4.3 KiB
Markdown
136 lines
4.3 KiB
Markdown
# 模块划分
|
||
|
||
## 目录
|
||
|
||
1. [M01:基础设施层(foundation)](#m01基础设施层foundation)
|
||
2. [M02:几何核心层(core)](#m02几何核心层core)
|
||
3. [M03:曲线曲面层(curves)](#m03曲线曲面层curves)
|
||
4. [M04:网格处理层(mesh)](#m04网格处理层mesh)
|
||
5. [M05:空间索引层(spatial)](#m05空间索引层spatial)
|
||
6. [M06:布尔运算层(boolean)](#m06布尔运算层boolean)
|
||
7. [M07:碰撞检测层(collision)](#m07碰撞检测层collision)
|
||
8. [构建目标总览](#8-构建目标总览)
|
||
|
||
---
|
||
|
||
## M01:基础设施层(foundation)
|
||
|
||
**路径**:`src/foundation/`
|
||
**命名空间**:`vde::foundation`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 数学封装 | `math_types.h/cpp` | Eigen 二次封装,统一向量/矩阵接口 |
|
||
| 精确谓词 | `exact_predicates.h/cpp` | Shewchuk 自适应精度谓词 |
|
||
| 公差系统 | `tolerance.h/cpp` | 全局/局部公差管理 |
|
||
| 内存池 | `memory_pool.h/cpp` | 高性能内存分配器 |
|
||
| I/O | `io_obj.h/cpp`, `io_stl.h/cpp` | OBJ/STL 文件读写 |
|
||
| 错误码 | `error_codes.h` | 统一错误码枚举 |
|
||
|
||
**公开头文件**:`include/vde/foundation/*.h`
|
||
|
||
---
|
||
|
||
## M02:几何核心层(core)
|
||
|
||
**路径**:`src/core/`
|
||
**命名空间**:`vde::core`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 基本类型 | `point.h`, `line.h`, `plane.h` | 点/线/面的类型别名与便捷函数 |
|
||
| 基本图形 | `triangle.h`, `polygon.h` | 三角形与多边形 |
|
||
| 包围盒 | `aabb.h` | 轴对齐包围盒 |
|
||
| 变换 | `transform.h` | 平移/旋转/缩放的便捷函数 |
|
||
| 距离计算 | `distance.h` | 各类几何距离计算 |
|
||
| 凸包 | `convex_hull.h` | 2D 与 3D 凸包算法 |
|
||
|
||
---
|
||
|
||
## M03:曲线曲面层(curves)
|
||
|
||
**路径**:`src/curves/`
|
||
**命名空间**:`vde::curves`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| Bezier 曲线 | `bezier_curve.h/cpp` | 任意阶 Bezier 曲线 |
|
||
| B-Spline 曲线 | `bspline_curve.h/cpp` | B-Spline 曲线 |
|
||
| NURBS 曲线 | `nurbs_curve.h/cpp` | NURBS 曲线 |
|
||
| Bezier 曲面 | `bezier_surface.h/cpp` | 张量积 Bezier 曲面 |
|
||
| B-Spline 曲面 | `bspline_surface.h/cpp` | B-Spline 曲面 |
|
||
| 离散化 | `tessellation.h/cpp` | 曲线/曲面三角网格化 |
|
||
|
||
---
|
||
|
||
## M04:网格处理层(mesh)
|
||
|
||
**路径**:`src/mesh/`
|
||
**命名空间**:`vde::mesh`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 半边网格 | `halfedge_mesh.h/cpp` | 半边数据结构与拓扑查询 |
|
||
| Delaunay 剖分 | `delaunay_2d.h/cpp` | 2D Bowyer-Watson 算法 |
|
||
| 网格简化 | `mesh_simplify.h/cpp` | QEM 算法 |
|
||
| 网格平滑 | `mesh_smooth.h/cpp` | Laplacian / Taubin 平滑 |
|
||
| 网格布尔 | `mesh_boolean.h/cpp` | 3D 网格布尔运算 |
|
||
| 质量评估 | `mesh_quality.h/cpp` | 网格质量指标 |
|
||
| 网格修复 | `mesh_repair.h/cpp` | 孔洞填充、非流形修复 |
|
||
|
||
---
|
||
|
||
## M05:空间索引层(spatial)
|
||
|
||
**路径**:`src/spatial/`
|
||
**命名空间**:`vde::spatial`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 索引接口 | `spatial_index.h` | 空间索引抽象接口(虚基类) |
|
||
| BVH | `bvh.h/cpp` | 包围体层次结构 |
|
||
| 八叉树 | `octree.h/cpp` | 八叉树空间划分 |
|
||
| KD-Tree | `kd_tree.h/cpp` | K 维树 |
|
||
| R-Tree | `r_tree.h/cpp` | R 树 |
|
||
|
||
---
|
||
|
||
## M06:布尔运算层(boolean)
|
||
|
||
**路径**:`src/boolean/`
|
||
**命名空间**:`vde::boolean`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 2D 布尔 | `boolean_2d.h/cpp` | 多边形布尔运算 |
|
||
| 网格布尔 | `boolean_mesh.h/cpp` | 三角网格布尔运算 |
|
||
|
||
---
|
||
|
||
## M07:碰撞检测层(collision)
|
||
|
||
**路径**:`src/collision/`
|
||
**命名空间**:`vde::collision`
|
||
|
||
| 组件 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| GJK | `gjk.h/cpp` | GJK 算法(凸体碰撞检测) |
|
||
| SAT | `sat.h/cpp` | 分离轴定理(多面体) |
|
||
| 射线相交 | `ray_intersect.h/cpp` | 射线-三角形等相交测试 |
|
||
| 三角形相交 | `tri_intersect.h/cpp` | 三角形-三角形 Möller 算法 |
|
||
|
||
---
|
||
|
||
## 8. 构建目标总览
|
||
|
||
| 目标 | 类型 | 依赖 |
|
||
|------|------|------|
|
||
| `vde_foundation` | 静态库 | Eigen3 |
|
||
| `vde_core` | 静态库 | vde_foundation |
|
||
| `vde_curves` | 静态库 | vde_core |
|
||
| `vde_mesh` | 静态库 | vde_core |
|
||
| `vde_spatial` | 静态库 | vde_core |
|
||
| `vde_boolean` | 静态库 | vde_mesh, vde_spatial |
|
||
| `vde_collision` | 静态库 | vde_core, vde_spatial |
|
||
| `vde` | 聚合库 | 以上全部 |
|