56 #ifndef VDE_HANDLE_DEFINED
61 #ifndef VDE_MESH_HANDLE_DEFINED
66 #ifndef VDE_CURVE_HANDLE_DEFINED
71 #ifndef VDE_SOLVER_HANDLE_DEFINED
76 #ifndef VDE_BODY_HANDLE_DEFINED
214 double* out_x,
double* out_y,
double* out_z);
228 double* out_min_x,
double* out_min_y,
double* out_min_z,
229 double* out_max_x,
double* out_max_y,
double* out_max_z);
318 int num_points,
int dim);
332 double* out_x,
double* out_y,
double* out_z);
374 double cx1,
double cy1,
double cz1,
double r1,
375 double cx2,
double cy2,
double cz2,
double r2);
402 double ox,
double oy,
double oz,
403 double dx,
double dy,
double dz,
404 double* out_t,
double* out_x,
double* out_y,
double* out_z);
void vde_solver_add_vertical(VdeSolverHandle solver, int line_id)
添加垂直约束(线段垂直)
VdeCurveHandle vde_curve_create_bezier(VdeHandle ctx, const double *control_points, int num_points, int dim)
创建 Bézier 曲线
VdeMeshHandle vde_load_mesh(VdeHandle ctx, const char *path)
从文件加载三角网格
VdeMeshHandle vde_deserialize_mesh(VdeHandle ctx, const uint8_t *data, size_t len)
从二进制字节流反序列化为网格
struct VdeSolver * VdeSolverHandle
约束求解器句柄 — 二维草图约束
VdeMeshHandle vde_mesh_boolean(VdeHandle ctx, VdeMeshHandle a, VdeMeshHandle b, int operation)
网格布尔运算
void vde_solver_add_horizontal(VdeSolverHandle solver, int line_id)
添加水平约束(线段水平)
void vde_mesh_get_bounds(VdeMeshHandle mesh, double *out_min_x, double *out_min_y, double *out_min_z, double *out_max_x, double *out_max_y, double *out_max_z)
获取网格的轴对齐包围盒
const char * vde_last_error(VdeHandle ctx)
获取最后一次操作的错误描述
void vde_mesh_get_vertex(VdeMeshHandle mesh, size_t idx, double *out_x, double *out_y, double *out_z)
获取指定索引的顶点坐标
VdeMeshHandle vde_mesh_smooth(VdeHandle ctx, VdeMeshHandle mesh, int iterations)
网格平滑(Laplacian 或 Taubin 平滑)
int vde_save_mesh(VdeHandle ctx, VdeMeshHandle mesh, const char *path, const char *format)
将三角网格保存为文件
struct VdeContext * VdeHandle
引擎上下文句柄 — 管理错误状态和内部资源
struct VdeMesh * VdeMeshHandle
三角网格句柄 — 顶点+面集合
void vde_solver_free(VdeSolverHandle solver)
释放求解器句柄
int vde_solver_add_point(VdeSolverHandle solver, double x, double y, int fixed)
向求解器添加点
int vde_collision_gjk_spheres(VdeHandle ctx, double cx1, double cy1, double cz1, double r1, double cx2, double cy2, double cz2, double r2)
两球体碰撞检测(GJK 算法)
void vde_solver_add_distance_constraint(VdeSolverHandle solver, int p0, int p1, double d)
添加距离约束(两点之间)
struct VdeBody * VdeBodyHandle
B-Rep 实体句柄 — 边界表示模型
VdeMeshHandle vde_mesh_simplify(VdeHandle ctx, VdeMeshHandle mesh, double target_ratio)
网格简化
void vde_curve_evaluate(VdeCurveHandle curve, double t, double *out_x, double *out_y, double *out_z)
在参数 t 处求值曲线
VdeBodyHandle vde_body_create_sphere(VdeHandle ctx, double r, int su, int sv)
创建球体 B-Rep
VdeMeshHandle vde_body_to_mesh(VdeHandle ctx, VdeBodyHandle body, double deflection)
将 B-Rep 实体转换为三角网格
size_t vde_mesh_num_vertices(VdeMeshHandle mesh)
获取网格的顶点数量
void vde_curve_free(VdeCurveHandle curve)
释放曲线句柄
int vde_solver_add_line(VdeSolverHandle solver, int p0, int p1)
向求解器添加线段(由两个点定义)
const char * vde_version(void)
获取引擎版本字符串
size_t vde_mesh_num_faces(VdeMeshHandle mesh)
获取网格的三角面数量
void vde_solver_get_point(VdeSolverHandle solver, int idx, double *out_x, double *out_y)
获取求解后的点坐标
int vde_solver_solve(VdeSolverHandle solver, int max_iter, double tol)
求解约束系统
void vde_body_free(VdeBodyHandle body)
释放 B-Rep 实体句柄
VdeBodyHandle vde_body_create_cylinder(VdeHandle ctx, double r, double h, int segs)
创建实心圆柱体 B-Rep
size_t vde_serialize_mesh(VdeHandle ctx, VdeMeshHandle mesh, uint8_t **out_data)
将网格序列化为二进制字节流
void vde_mesh_free(VdeMeshHandle mesh)
释放网格句柄及其资源
VdeBodyHandle vde_body_create_box(VdeHandle ctx, double w, double h, double d)
创建实心立方体 B-Rep
struct VdeCurve * VdeCurveHandle
参数曲线句柄 — NURBS 曲线
void vde_destroy(VdeHandle ctx)
销毁引擎上下文
int vde_curve_degree(VdeCurveHandle curve)
获取曲线的次数
int vde_collision_ray_mesh(VdeHandle ctx, VdeMeshHandle mesh, double ox, double oy, double oz, double dx, double dy, double dz, double *out_t, double *out_x, double *out_y, double *out_z)
射线与网格的最近交点查询
void vde_free_buffer(uint8_t *ptr)
释放由 vde_serialize_mesh 分配的缓冲区
VdeHandle vde_create(void)
创建 ViewDesignEngine 上下文
VdeSolverHandle vde_solver_create(void)
创建二维约束求解器