diff options
Diffstat (limited to 'inc/cad')
| -rw-r--r-- | inc/cad/solve.h | 50 |
1 files changed, 50 insertions, 0 deletions
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); |
