summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2026-03-28 09:47:34 +0100
committerJesper Jensen <jesper@jnsn.dev>2026-03-28 09:47:34 +0100
commitebb61f7bec9a6affa2be7b0eeb94bb737b9edcb2 (patch)
tree570251bc426ccb4ee6cc88b06754ef14c7c834fb /test
parentd8a6d8a8b046dcb73f1c1daf0e013a703517da68 (diff)
Add support for post solve assembling
Diffstat (limited to 'test')
-rw-r--r--test/solve.c21
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