# 接口定义 ## 目录 1. [命名约定](#1-命名约定) 2. [核心接口抽象](#2-核心接口抽象) - 2.1 空间索引接口 - 2.2 曲线求值接口 - 2.3 网格数据结构接口 - 2.4 布尔运算接口 3. [稳定 C API(可选)](#3-稳定-c-api可选) 4. [错误处理约定](#4-错误处理约定) --- ## 1. 命名约定 | 元素 | 风格 | 示例 | |------|------|------| | 命名空间 | snake_case | `vde::core` | | 类/结构体 | PascalCase | `HalfedgeMesh` | | 函数/方法 | snake_case | `compute_convex_hull()` | | 变量 | snake_case | `vertex_count` | | 成员变量 | snake_case_ | `vertices_` | | 常量 | UPPER_SNAKE_CASE | `MAX_ITERATIONS` | | 枚举值 | kPascalCase | `kSuccess` | | 宏前缀 | VDE_ | `VDE_VERSION_MAJOR` | --- ## 2. 核心接口抽象 ### 2.1 空间索引接口 ```cpp namespace vde::spatial { template class SpatialIndex { public: virtual ~SpatialIndex() = default; virtual void build(const std::vector& items) = 0; virtual void insert(const T& item) = 0; virtual bool remove(const T& item) = 0; virtual std::vector query_range(const AABB3D& range) const = 0; virtual std::vector query_knn(const Point3D& point, size_t k) const = 0; virtual std::vector query_ray(const Ray3Dd& ray) const = 0; virtual void clear() = 0; virtual size_t size() const = 0; }; } ``` ### 2.2 曲线求值接口 ```cpp namespace vde::curves { template class CurveBase { public: virtual ~CurveBase() = default; virtual int degree() const = 0; virtual std::pair domain() const = 0; virtual Point evaluate(double t) const = 0; virtual Vector derivative(double t, int order = 1) const = 0; virtual const std::vector>& control_points() const = 0; }; } ``` ### 2.3 网格数据结构接口 ```cpp namespace vde::mesh { class MeshBase { public: virtual ~MeshBase() = default; virtual size_t num_vertices() const = 0; virtual size_t num_faces() const = 0; virtual const Point3D& vertex(size_t idx) const = 0; virtual std::vector vertex_faces(size_t idx) const = 0; virtual Vector3D face_normal(size_t idx) const = 0; virtual Vector3D vertex_normal(size_t idx) const = 0; virtual bool is_boundary_vertex(size_t idx) const = 0; virtual void update_normals() = 0; }; } ``` ### 2.4 布尔运算接口 ```cpp namespace vde::boolean { enum class BooleanOp { Union, Intersection, Difference, SymDiff }; template class BooleanEngine { public: virtual ~BooleanEngine() = default; virtual GeometryType execute( const GeometryType& a, const GeometryType& b, BooleanOp op) = 0; virtual void set_tolerance(double tol) = 0; }; } ``` --- ## 3. 稳定 C API(可选) 为跨语言绑定提供纯 C 接口: ```c // 创建与销毁上下文 vde_ctx_t vde_engine_create(void); void vde_engine_destroy(vde_ctx_t ctx); // 布尔运算 vde_mesh_t vde_boolean_union(vde_ctx_t ctx, vde_mesh_t a, vde_mesh_t b); // 网格简化 vde_mesh_t vde_mesh_simplify(vde_ctx_t ctx, vde_mesh_t m, double ratio); ``` --- ## 4. 错误处理约定 - 所有公开 API 返回值使用 `Result` 类型(`std::expected` 的兼容实现) - 错误码枚举定义于 `vde/foundation/error_codes.h` - 内部实现可使用断言(`assert`),但公开 API 不抛异常 - `using Result = tl::expected;` | 错误码 | 说明 | |--------|------| | `kSuccess` | 操作成功 | | `kInvalidArgument` | 非法参数 | | `kInvalidGeometry` | 非法几何(退化/非流形) | | `kDegenerateCase` | 退化情况 | | `kNotImplemented` | 未实现 | | `kNumericalError` | 数值计算错误 |