docs: Doxyfile + mainpage for API reference
CI / Build & Test (push) Failing after 1m31s
CI / Release Build (push) Failing after 16m56s

This commit is contained in:
茂之钳
2026-07-24 10:59:03 +00:00
parent bb5149f68f
commit 10847e61ad
3 changed files with 253 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
# Doxyfile for ViewDesignEngine
# Generated 2026-07-24
PROJECT_NAME = "ViewDesignEngine"
PROJECT_NUMBER = "3.1.0"
PROJECT_BRIEF = "高性能 CAD 计算几何引擎"
OUTPUT_DIRECTORY = docs/api
CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = YES
OUTPUT_LANGUAGE = Chinese
OPTIMIZE_OUTPUT_FOR_C = NO
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
ALPHABETICAL_INDEX = YES
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_TIMESTAMP = YES
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 280
GENERATE_LATEX = NO
GENERATE_XML = NO
INPUT = include docs/mainpage.h
RECURSIVE = YES
FILE_PATTERNS = *.h
EXCLUDE_PATTERNS = */detail/*
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = VDE_EXPORT=
+121
View File
@@ -0,0 +1,121 @@
/**
* @mainpage ViewDesignEngine API 参考文档
*
* ViewDesignEngine 是一个高性能 C++17 计算几何引擎,覆盖从底层数学工具到
* B-Rep 拓扑建模、SDF 隐式建模、可微分几何、工业格式互操作的全栈能力。
*
* @section features 主要功能
* - **基础数学**: 点/向量/变换/AABB/公差系统
* - **曲线曲面**: Bézier / B-Spline / NURBS、自适应细分
* - **网格处理**: 半边数据结构、Delaunay、简化、平滑、修复、Marching Cubes
* - **空间索引**: BVH (SAH)、Octree、KD-Tree、R-Tree (STR)
* - **布尔运算**: 2D Sutherland-Hodgman、3D 网格布尔、B-Rep 布尔
* - **碰撞检测**: GJK/EPA、SAT、射线-三角形
* - **B-Rep 建模**: 边界表示、STEP/IGES 导入导出、fillet/chamfer/shell
* - **SDF 隐式建模**: 15+ 图元、CSG 表达式树、自动微分、梯度优化
* - **格式支持**: STEP、IGES、glTF/GLB、STL、OBJ、PLY
*
* @section modules 模块组织
*
* | 模块 | 命名空间 | 说明 |
* |------|---------|------|
* | @ref foundation | vde::foundation | 数学类型、公差、I/O、序列化 |
* | @ref core | vde::core | 点/线/面、变换、多边形、Voronoi、ICP |
* | @ref curves | vde::curves | NURBS 曲线曲面、细分 |
* | @ref mesh | vde::mesh | 半边网格、三角剖分、质量、修复 |
* | @ref spatial | vde::spatial | BVH、Octree、KD-Tree、R-Tree |
* | @ref boolean | vde::boolean | 2D/3D 布尔、多边形偏移 |
* | @ref collision | vde::collision | GJK、SAT、射线、三角交线 |
* | @ref brep | vde::brep | B-Rep 建模、STEP/IGES、布尔、验证 |
* | @ref sdf | vde::sdf | 隐式图元、CSG 树、自动微分、优化 |
* | @ref sketch | vde::sketch | 2D 约束求解 |
* | @ref capi | vde::capi | C API 绑定 |
*
* @section quickstart 快速开始
*
* @code{.cpp}
* #include <vde/sdf/sdf_primitives.h>
* #include <vde/sdf/sdf_operations.h>
*
* // 创建一个光滑并集: 球 + 盒子
* using namespace vde::core;
* auto f = [](double x, double y, double z) {
* double d1 = vde::sdf::sphere(Point3D(x,y,z), 1.5);
* double d2 = vde::sdf::box(Point3D(x,y,z), Point3D(1,1,1));
* return vde::sdf::op_smooth_union(d1, d2, 0.3);
* };
*
* // 求值
* double val = f(0, 0, 0); // SDF 值
* @endcode
*
* @section build 构建
*
* @code
* cmake -B build && cmake --build build -j$(nproc)
* cd build && ctest --output-on-failure
* @endcode
*
* 依赖: CMake ≥ 3.16, C++17 编译器, Eigen 3 (自动下载)
*
* @see https://github.com/.../ViewDesignEngine
*/
// ── Module group definitions ──
/**
* @defgroup foundation 基础模块 (vde::foundation)
* @brief 数学类型、公差系统、精确谓词、文件 I/O、序列化
*
* 提供整个引擎使用的底层基础设施。
*/
/**
* @defgroup core 核心模块 (vde::core)
* @brief 点/向量/变换、多边形、凸包、Voronoi、ICP、距离计算
*/
/**
* @defgroup curves 曲线曲面模块 (vde::curves)
* @brief Bézier、B-Spline、NURBS 曲线与曲面的求值、求导、细分
*/
/**
* @defgroup mesh 网格模块 (vde::mesh)
* @brief 半边网格、Delaunay 2D/3D、简化、平滑、修复、参数化、Marching Cubes
*/
/**
* @defgroup spatial 空间索引模块 (vde::spatial)
* @brief BVH (SAH)、Octree、KD-Tree、R-Tree (STR bulk-loading)
*/
/**
* @defgroup boolean 布尔运算模块 (vde::boolean)
* @brief 2D Sutherland-Hodgman 裁剪、3D 网格布尔、多边形偏移
*/
/**
* @defgroup collision 碰撞检测模块 (vde::collision)
* @brief GJK/EPA、SAT、Möller-Trumbore 射线-三角形、三角-三角交线
*/
/**
* @defgroup brep B-Rep 模块 (vde::brep)
* @brief 边界表示建模、STEP/IGES 导入导出、布尔运算、验证、fillet/chamfer/shell
*/
/**
* @defgroup sdf SDF 模块 (vde::sdf)
* @brief 隐式建模:15+ 图元、CSG 树、自动微分、梯度优化、SDF→Mesh
*/
/**
* @defgroup sketch 草图模块 (vde::sketch)
* @brief 2D 约束求解器
*/
/**
* @defgroup capi C API 模块 (vde::capi)
* @brief 纯 C 接口,支持 FFI / 跨语言绑定
*/
+90
View File
@@ -1,3 +1,19 @@
/**
* @file spatial_index.h
* @brief 空间索引抽象基类
*
* 定义所有空间加速结构的统一接口。子类通过不同策略实现
* 空间划分与加速查询,在构建效率与查询性能之间做权衡。
*
* 子类包括:
* - BVH: 层次包围盒,适合静态三角形网格
* - Octree: 八叉树,适合均匀分布点云
* - KDTree: k-d 树,适合维度无关的中规模数据
* - RTree: R 树,适合动态插入删除场景
*
* @ingroup spatial
*/
#pragma once #pragma once
#include "vde/core/aabb.h" #include "vde/core/aabb.h"
#include "vde/core/line.h" #include "vde/core/line.h"
@@ -11,17 +27,91 @@ using core::Point3D;
using core::Ray3Dd; using core::Ray3Dd;
using core::Triangle3D; using core::Triangle3D;
/**
* @brief 空间索引抽象基类
*
* 所有空间加速结构(BVH、Octree、KDTree、RTree)的公共接口。
* 模板参数 T 为被索引对象类型,需提供以下辅助函数:
* - get_position(T) → Point3D (空间位置)
* - get_aabb(T) → AABB3D (包围盒,用于范围查询)
* - ray_hits_item(T, Ray3Dd) → bool(与射线求交)
*
* @tparam T 被索引的空间对象类型
*
* @note 本类为纯虚接口,不可直接实例化
*/
template <typename T> template <typename T>
class SpatialIndex { class SpatialIndex {
public: public:
virtual ~SpatialIndex() = default; virtual ~SpatialIndex() = default;
/**
* @brief 批量构建索引
*
* 清空已有数据,将 items 全部插入并重建索引结构。
* 各子类实现不同的构建策略:
* - BVH: SAH 启发式自顶向下划分
* - KDTree: 中值分割递归构建
* - Octree: 自适应八等分递归剖分
* - RTree: 批量插入后优化重组
*
* @param items 待索引的对象数组
*/
virtual void build(const std::vector<T>& items) = 0; virtual void build(const std::vector<T>& items) = 0;
/**
* @brief 插入单个对象
*
* 将 item 加入索引。部分结构(如 BVH)仅支持一次性 build,
* 插入后可能需要重建。
*
* @param item 待插入的空间对象
*/
virtual void insert(const T& item) = 0; virtual void insert(const T& item) = 0;
/**
* @brief 删除单个对象
*
* @param item 待删除的空间对象
* @return true 删除成功;false 对象不存在
*/
virtual bool remove(const T& item) = 0; virtual bool remove(const T& item) = 0;
/**
* @brief 范围查询:返回与 AABB 相交的所有对象
*
* @param range 查询的轴对齐包围盒
* @return 与 range 相交的对象列表
*/
virtual std::vector<T> query_range(const AABB3D& range) const = 0; virtual std::vector<T> query_range(const AABB3D& range) const = 0;
/**
* @brief K 近邻查询:返回距 point 最近的 k 个对象
*
* @param point 查询点
* @param k 需要返回的对象数量
* @return 按距离升序排列的 k 个最近对象
*/
virtual std::vector<T> query_knn(const Point3D& point, size_t k) const = 0; virtual std::vector<T> query_knn(const Point3D& point, size_t k) const = 0;
/**
* @brief 射线查询:返回与射线相交的所有对象
*
* @param ray 查询射线
* @return 按命中距离升序排列的相交对象列表
*/
virtual std::vector<T> query_ray(const Ray3Dd& ray) const = 0; virtual std::vector<T> query_ray(const Ray3Dd& ray) const = 0;
/**
* @brief 清空索引中所有数据
*/
virtual void clear() = 0; virtual void clear() = 0;
/**
* @brief 当前索引中的对象数量
*
* @return 对象计数
*/
virtual size_t size() const = 0; virtual size_t size() const = 0;
}; };