Files
ViewDesignEngine/docs/02-概要设计/01-系统架构设计.md
T

4.7 KiB
Raw Blame History

系统架构设计

目录

  1. 整体架构
  2. 模块层次
  3. 数据流
  4. 设计原则

1. 整体架构

┌─────────────────────────────────────────────────────────┐
│                    公开 API 层                           │
│      C++ 头文件,稳定 ABIDoxygen 文档)               │
├─────────────────────────────────────────────────────────┤
│  ┌─────────┐ ┌──────────┐ ┌────────┐ ┌──────────────┐  │
│  │  几何   │ │ 曲线曲面 │ │ 网格   │ │   空间索引   │  │
│  │  核心   │ │   建模   │ │ 处理   │ │              │  │
│  └────┬────┘ └────┬─────┘ └───┬────┘ └──────┬───────┘  │
│       │           │           │              │           │
│  ┌────┴───────────┴───────────┴──────────────┴───────┐  │
│  │                 CSG 布尔引擎                       │  │
│  └────────────────────────┬──────────────────────────┘  │
│  ┌────────────────────────┴──────────────────────────┐  │
│  │                  碰撞检测层                        │  │
│  └────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────┤
│                    基础设施层                            │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐   │
│  │  数学库  │ │ 公差系统 │ │   I/O    │ │ 内存管理 │   │
│  │ (Eigen)  │ │          │ │(OBJ/STL) │ │          │   │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘   │
└─────────────────────────────────────────────────────────┘

2. 模块层次

层级 模块 命名空间 职责
L0 基础设施 foundation vde::foundation 数学库封装、精确谓词、内存管理、I/O
L1 几何核心 core vde::core 基本几何类型、变换、距离计算、凸包
L2 曲线曲面 curves vde::curves Bezier/B-Spline/NURBS 曲线与曲面
L3 网格处理 mesh vde::mesh 网格数据结构、剖分、简化、平滑
L4 空间索引 spatial vde::spatial BVH、Octree、KD-Tree、R-Tree
L5 布尔运算 boolean vde::boolean 2D/3D CSG 布尔运算
L5 碰撞检测 collision vde::collision GJK、SAT、射线相交

依赖规则

  • 上层可依赖下层,下层不依赖上层
  • 同层模块间通过接口抽象解耦
  • L5 层(布尔运算/碰撞检测)依赖 L1-L4

3. 数据流

输入数据 (OBJ/STL/STEP)
    │
    ▼
[ I/O 解析 ] ──► 几何核心(基本实体)
    │
    ▼
[ 曲线曲面建模 ] ──► 离散化 ──► [ 网格处理 ]
    │                              │
    ▼                              ▼
[ CSG 布尔 ] ◄──────────── [ 空间索引 ]
    │
    ▼
输出数据 (OBJ/STL/B-Rep)

4. 设计原则

  1. 零开销抽象:模板与编译期多态,不引入不必要的虚函数开销
  2. 数据驱动:使用 SoA(数组结构体)布局优化缓存命中率
  3. 不可变优先:几何实体默认不可变,变换操作返回新实体
  4. RAII 资源管理:所有资源由智能指针管理
  5. 异常安全:提供基本保证以上,核心路径提供强保证
  6. 单一依赖:仅依赖 Eigen,不引入 Boost 等重型库