Files
ViewDesignEngine/examples/07_capi_integration/main.cpp
T

42 lines
1.5 KiB
C++
Raw Normal View History

#include <stdio.h>
#include "vde/vde.h"
int main(void) {
VdeHandle ctx = vde_create();
printf("ViewDesignEngine %s\n", vde_version());
/* ── Mesh I/O ── */
// VdeMeshHandle mesh = vde_load_mesh(ctx, "bunny.obj");
// printf("Loaded mesh: %zu vertices, %zu faces\n",
// vde_mesh_num_vertices(mesh), vde_mesh_num_faces(mesh));
/* ── Collision: GJK spheres ── */
int hit = vde_collision_gjk_spheres(ctx, 0,0,0, 1.0, 1.5,0,0, 1.0);
printf("Spheres overlap: %s\n", hit ? "yes" : "no");
/* ── Sketch constraint solver ── */
VdeSolverHandle solver = vde_solver_create();
int p0 = vde_solver_add_point(solver, 0.0, 0.0, 1); /* fixed */
int p1 = vde_solver_add_point(solver, 3.0, 0.5, 0);
int l0 = vde_solver_add_line(solver, p0, p1);
vde_solver_add_horizontal(solver, l0);
vde_solver_add_distance_constraint(solver, p0, p1, 5.0);
int ok = vde_solver_solve(solver, 100, 1e-6);
printf("Solver converged: %s\n", ok ? "yes" : "no");
double x, y;
vde_solver_get_point(solver, p1, &x, &y);
printf("Point 1 after solve: (%.4f, %.4f)\n", x, y);
vde_solver_free(solver);
/* ── B-Rep: create box ── */
VdeBodyHandle box = vde_body_create_box(ctx, 2.0, 2.0, 2.0);
VdeMeshHandle box_mesh = vde_body_to_mesh(ctx, box, 0.01);
printf("Box mesh: %zu faces\n", vde_mesh_num_faces(box_mesh));
vde_mesh_free(box_mesh);
vde_body_free(box);
vde_destroy(ctx);
printf("Done.\n");
return 0;
}