3.7 KiB
3.7 KiB
接口定义
目录
- 命名约定
- 核心接口抽象
- 2.1 空间索引接口
- 2.2 曲线求值接口
- 2.3 网格数据结构接口
- 2.4 布尔运算接口
- 稳定 C API(可选)
- 错误处理约定
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 空间索引接口
namespace vde::spatial {
template <typename T>
class SpatialIndex {
public:
virtual ~SpatialIndex() = default;
virtual void build(const std::vector<T>& items) = 0;
virtual void insert(const T& item) = 0;
virtual bool remove(const T& item) = 0;
virtual std::vector<T> query_range(const AABB3D& range) const = 0;
virtual std::vector<T> query_knn(const Point3D& point, size_t k) const = 0;
virtual std::vector<T> query_ray(const Ray3Dd& ray) const = 0;
virtual void clear() = 0;
virtual size_t size() const = 0;
};
}
2.2 曲线求值接口
namespace vde::curves {
template <typename T, size_t Dim>
class CurveBase {
public:
virtual ~CurveBase() = default;
virtual int degree() const = 0;
virtual std::pair<double, double> domain() const = 0;
virtual Point<T, Dim> evaluate(double t) const = 0;
virtual Vector<T, Dim> derivative(double t, int order = 1) const = 0;
virtual const std::vector<Point<T, Dim>>& control_points() const = 0;
};
}
2.3 网格数据结构接口
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<size_t> 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 布尔运算接口
namespace vde::boolean {
enum class BooleanOp { Union, Intersection, Difference, SymDiff };
template <typename GeometryType>
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 接口:
// 创建与销毁上下文
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<T>类型(std::expected<T, ErrorCode>的兼容实现) - 错误码枚举定义于
vde/foundation/error_codes.h - 内部实现可使用断言(
assert),但公开 API 不抛异常 using Result<T> = tl::expected<T, ErrorCode>;
| 错误码 | 说明 |
|---|---|
kSuccess |
操作成功 |
kInvalidArgument |
非法参数 |
kInvalidGeometry |
非法几何(退化/非流形) |
kDegenerateCase |
退化情况 |
kNotImplemented |
未实现 |
kNumericalError |
数值计算错误 |