#include #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; }