Files
ViewDesignEngine/docs/02-概要设计/02-模块划分.md
T

136 lines
4.3 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.
# 模块划分
## 目录
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` | 聚合库 | 以上全部 |