diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2026-03-28 09:47:34 +0100 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2026-03-28 09:47:34 +0100 |
| commit | ebb61f7bec9a6affa2be7b0eeb94bb737b9edcb2 (patch) | |
| tree | 570251bc426ccb4ee6cc88b06754ef14c7c834fb /test | |
| parent | d8a6d8a8b046dcb73f1c1daf0e013a703517da68 (diff) | |
Add support for post solve assembling
Diffstat (limited to 'test')
| -rw-r--r-- | test/solve.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/test/solve.c b/test/solve.c index a331573..e1729ff 100644 --- a/test/solve.c +++ b/test/solve.c @@ -2,6 +2,8 @@ #include <assert.h> int main(int argc, char *argv[]) { + struct subassembly assemblies[16] = {}; + size_t assemblies_num; { printf("Triangle by 3 distances\n"); struct constraints constraints = {}; @@ -18,7 +20,7 @@ int main(int argc, char *argv[]) { }); struct drawing drawing = {}; - bool solved = solve_constraints(&constraints, &drawing); + bool solved = solve_constraints(&constraints, &drawing, assemblies, &assemblies_num); assert(solved); @@ -55,7 +57,7 @@ int main(int argc, char *argv[]) { }); struct drawing drawing = {}; - bool solved = solve_constraints(&constraints, &drawing); + bool solved = solve_constraints(&constraints, &drawing, assemblies, &assemblies_num); assert(solved); @@ -105,7 +107,7 @@ int main(int argc, char *argv[]) { }); struct drawing drawing = {}; - bool solved = solve_constraints(&constraints, &drawing); + bool solved = solve_constraints(&constraints, &drawing, assemblies, &assemblies_num); assert(solved); free_drawing(&drawing); @@ -149,7 +151,18 @@ int main(int argc, char *argv[]) { }); struct drawing drawing = {}; - bool solved = solve_constraints(&constraints, &drawing); + bool solved = solve_constraints(&constraints, &drawing, assemblies, &assemblies_num); + + // Copy over all the parameter values to a new array + // @PERF: Maybe we should just store them in a separate array to start with + double *params = malloc(sizeof(double) * (constraints.length)); + for(size_t i = 0; i < constraints.length; i++) { + params[i] = constraints.elements[i].v; + } + + place_points(&drawing, params); + + reconstruct_drawing(&constraints, assemblies, &assemblies_num); // @COMPL: We don't currently know how to derive an angle constraint // from the rigid triangle. We'd probably need to do some sort of |
