# 工程目录结构 ## 目录 1. [完整目录树](#1-完整目录树) 2. [CMakeLists.txt 骨架](#2-cmakeliststxt-骨架) --- ## 1. 完整目录树 ``` ViewDesignEngine/ ├── CMakeLists.txt # 根 CMake 配置 ├── README.md # 项目说明 ├── .clang-format # 代码格式化配置 ├── .gitignore │ ├── cmake/ # CMake 模块 │ └── CompilerSettings.cmake # 编译器警告/优化配置 │ ├── include/ # 公开头文件 │ └── vde/ # 命名空间 vde:: │ ├── foundation/ # 基础设施层 │ │ ├── math_types.h │ │ ├── tolerance.h │ │ ├── error_codes.h │ │ ├── exact_predicates.h │ │ ├── memory_pool.h │ │ ├── io_obj.h │ │ └── io_stl.h │ ├── core/ # 几何核心层 │ │ ├── point.h │ │ ├── line.h │ │ ├── plane.h │ │ ├── triangle.h │ │ ├── polygon.h │ │ ├── aabb.h │ │ ├── transform.h │ │ ├── distance.h │ │ └── convex_hull.h │ ├── curves/ # 曲线曲面层 │ │ ├── bezier_curve.h │ │ ├── bspline_curve.h │ │ ├── nurbs_curve.h │ │ ├── bezier_surface.h │ │ ├── bspline_surface.h │ │ └── tessellation.h │ ├── mesh/ # 网格处理层 │ │ ├── halfedge_mesh.h │ │ ├── delaunay_2d.h │ │ ├── mesh_simplify.h │ │ ├── mesh_smooth.h │ │ ├── mesh_boolean.h │ │ ├── mesh_quality.h │ │ └── mesh_repair.h │ ├── spatial/ # 空间索引层 │ │ ├── spatial_index.h │ │ ├── bvh.h │ │ ├── octree.h │ │ ├── kd_tree.h │ │ └── r_tree.h │ ├── boolean/ # 布尔运算层 │ │ ├── boolean_2d.h │ │ └── boolean_mesh.h │ └── collision/ # 碰撞检测层 │ ├── gjk.h │ ├── sat.h │ ├── ray_intersect.h │ └── tri_intersect.h │ ├── src/ # 实现文件(与 include 镜像) │ ├── tests/ # 单元测试 │ ├── core/ # 测试几何核心 │ ├── curves/ # 测试曲线曲面 │ ├── mesh/ # 测试网格处理 │ ├── spatial/ # 测试空间索引 │ ├── collision/ # 测试碰撞检测 │ └── boolean/ # 测试布尔运算 │ ├── examples/ # 示例程序 │ ├── 01_hello_triangle/ │ ├── 02_bezier/ │ ├── 03_mesh/ │ ├── 04_delaunay/ │ ├── 05_boolean/ │ └── 06_collision/ │ ├── benchmarks/ # 性能测试 ├── data/ # 测试数据 │ ├── meshes/ │ └── curves/ └── docs/ # 工程文档 ``` --- ## 2. CMakeLists.txt 骨架 ```cmake cmake_minimum_required(VERSION 3.16) project(ViewDesignEngine VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 选项 option(BUILD_TESTS "构建单元测试" ON) option(BUILD_EXAMPLES "构建示例程序" ON) # 依赖(自动 FetchContent) find_package(Eigen3 3.3 QUIET) # 若未找到,使用 FetchContent 下载 # 子目录 add_subdirectory(src) if(BUILD_TESTS) enable_testing() add_subdirectory(tests) endif() if(BUILD_EXAMPLES) add_subdirectory(examples) endif() ```