From c74fc3a706389834bd4ed210594b82e6e787ee40 Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Sun, 2 Nov 2025 20:56:45 +0100 Subject: Split the solver into it's own file --- inc/cad/solve.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 inc/cad/solve.h (limited to 'inc') diff --git a/inc/cad/solve.h b/inc/cad/solve.h new file mode 100644 index 0000000..cb2c4ac --- /dev/null +++ b/inc/cad/solve.h @@ -0,0 +1,50 @@ +#pragma once + +#include "cad/construction.h" + +#define SEARCH_DEPTH 16 + +enum component_type { + COM_POINT, + COM_LINE, +}; + +struct component { + enum component_type type; + + struct element *e; + + bool show_when_placed; + + double min; + double max; + bool min_max_init; + bool drawn; +}; + +extern char *constraint_type_name[]; +enum constraint_type { + CT_POINT_POINT_DISTANCE, + CT_POINT_LINE_DISTANCE, + CT_LINE_LINE_ANGLE, +}; + +struct path_step { + uint64_t i; + bool direction; +}; + +struct constraint { + enum constraint_type type; + double v; + + struct component *c1; + struct component *c2; + + uint64_t order; + struct path_step path[SEARCH_DEPTH]; + bool forward; + bool used; +}; + +bool solve_constraints(struct constraint *constraints, size_t constraints_num, struct drawing *drawing); -- cgit v1.2.3