Mikolaj Wielgus
987a4c6e9e
fix: Flip by X instead of rotating by 180 degrees
...
Obviously -- flip is undone by a flip, not a rotation. This corrects the
previous commit.
2025-08-11 21:15:40 +02:00
Mikolaj Wielgus
ac7b24f939
refactor(autorouter/autoroute): Store vecs of edits instead of large edits
...
This results in a large copy, but it should be possible to refactor the
code later to get rid of this.
2025-08-10 11:30:50 +02:00
Mikolaj Wielgus
5bff83ecbd
refactor: Add method to join iterable of edits into one edit
2025-08-09 22:55:45 +02:00
Ellen Emilia Anna Zscheile
6f7586227c
feat(board/edit): Edit structures should implement Default trait
2025-08-09 22:44:33 +02:00
Mikolaj Wielgus
791291b82e
feat(router/draw): Try to add canes before trying to squeeze them through
2025-08-09 21:08:10 +02:00
Mikolaj Wielgus
83285dde6d
feat(drawing/drawing): Make it possible to have multiple outers for each gear
2025-08-09 21:08:10 +02:00
Mikolaj Wielgus
6317d8b08a
feat(geometry/geometry): Create outward bend walker, use it for R-tree updates
...
Drawing and above abstraction layers do not use it yet, but this will
change soon.
2025-08-09 21:08:10 +02:00
Ellen Emilia Anna Zscheile
8732ee7fbb
refactor(geometry/edit): Put reverse and merge functionality into trait (DRY)
2025-07-20 12:40:56 +02:00
Mikolaj Wielgus
09c98f2d17
feat(autorouter/autoroute): Add option to toggle permutation
...
Updated with the following command in Fish shell:
```
for f in tests/**.cmd; jq ".done?.[].Autoroute[1].permutate |= false" $f | sponge $f; end
```
2025-07-19 21:42:47 +02:00
Mikolaj Wielgus
d181c7df1b
feat(autorouter/autoroute): Implement basic brute-force permutator
...
Permutates if and until a solution is found. Does not do optimization
so far.
Thanks to this, it is now possible to route the DE-9 to DE-9 test
without having to find the correct sequence of autorouting jobs.
2025-07-19 21:31:31 +02:00
Mikolaj Wielgus
d7129354a1
feat(autorouter/autoroute): Record band assigns so undo actually works
...
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 21:08:42 +02:00
Mikolaj Wielgus
1cc75a79e8
feat(autorouter/autoroute): Make it possible to abort autoroute stepper
...
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 12:50:51 +02:00
Mikolaj Wielgus
2f4dac223c
fix(geometry/with_rtree): Do not remove only-modified dots when applying edit
...
This fixes a panic when undoing some bands.
180952c94f1c7c56c2ce5d2bdd3ab672aa0ccfec did not fix this problem
because we did not stop removing modified dots.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
d6a82d5264
fix(drawing/drawing): Remove temporary recorder in outward bow updating code
...
I'm skeptical if this actually works, and I see no difference with this
removed. If this breaks the topo-navmesh code, it may be a better option
to just disable squeezing through under bends in it.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
4d5fc25ae3
refactor(drawing/drawing): Some minor changes to method naming, comments, contracts
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
3c9ce32ff2
fix(geometry/edit): Remove `(None, None)` pairs when merging edits
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
6dc1ea601c
fix(geometry/with_rtree): Add edit apply special handling for modified dots
...
This does not fix the problems I'm encountering, but is an edge case I
should try to cover anyway.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
21dd6ffd39
fix(geometry/with_rtree): Debug-assert instead of returning `Err(())`
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
a9c4456a54
fix(geometry/geometry): Debug-assert against failed node and edge removals
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
42c788063b
fix(geometry/edit): Find first gear correctly, don't rely on edge order
2025-07-17 12:49:25 +02:00
Ellen Emilia Anna Zscheile
4fea23c9ac
chore: Fix warnings about lifetime annotations
2025-07-17 12:33:31 +02:00
Mikolaj Wielgus
5a0fec9618
fix(geometry/recording_with_rtree): Some more fixes against bend bbox invalidation
...
1f8ace9c77 did not fix all the bbox
invalidation problems, hopefully this gets this right now.
2025-07-16 19:35:51 +02:00
Mikolaj Wielgus
f75bae0666
fix(geometry/recording_with_rtree): Attach bends applied from edit
...
This was unimplemented, which made both redo and cane removal not work
correctly.
2025-07-16 15:27:56 +02:00
Mikolaj Wielgus
1f8ace9c77
fix(geometry/recording_with_rtree): Do not inadvertedly invalidate bend bboxes
...
This fixes a crash that was happening when undoing autoroutings.
Bends are still not restored correctly, I will fix that soon.
2025-07-16 00:22:57 +02:00
Mikolaj Wielgus
48fe63a387
feat(geometry/with_rtree): Assert R-tree element removal to be always successful
2025-07-15 23:04:35 +02:00
Mikolaj Wielgus
43005eb864
feat(autorouter/autorouter): Add presorting by ratline intersection count and length
...
Sadly, this does not work well for the DE-9 to DE-9 test, but it is a
step forward.
2025-07-14 13:26:38 +02:00
Mikolaj Wielgus
0752817538
refactor(autorouter/ratsnest): Split out ratline code to new file, ratline.rs
2025-07-14 13:26:38 +02:00
Mikolaj Wielgus
ef78c92506
feat(autorouter/autoroute): Track progress of also past and future ratlines
2025-07-10 22:38:50 +02:00
Mikolaj Wielgus
68d9844d0d
feat(topola-egui): Add progress bar for the currently routed ratline
...
The capability to measure progress will later be useful to choose slower
but better optimization strategies if more time is available.
2025-07-10 22:38:46 +02:00
Mikolaj Wielgus
29dc59df04
refactor(router/navmesh): Split out navmesh triangulation into "prenavmesh" module
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
9742740b9e
refactor(router/navmesh): Factor out some repeating code
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
5fbb226d08
feat(router/navmesh): Make sure there are quadrinavedges for each trianedge
...
The problems I noticed in 8095b700167c7445b0bd7c55991f0b6b1c7e2f3d are
resolved now.
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
3e322d7b34
feat(topola-egui): Add showing of triangulation constraints to debug overlay
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
f3245b9607
feat(router/navmesh): Add constraint edges for loose segs
...
This does not work entirely correctly. I will investigate in subsequent
commits.
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
274ad166c1
feat(router/navmesh): Add constraint edges for fixed segs
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus
b25ad863ba
refactor(autorouter/invoker): Merge debug overlay data traits into one trait
...
The name of this new trait shall be `GetDebugOverlayData`.
2025-07-06 23:09:08 +02:00
Ellen Emilia Anna Zscheile
5cc1747885
Revert "fix(router/ng/eval): Flip alignment of outer edges"
...
This reverts commit e3790eb366 .
2025-06-30 15:51:25 +02:00
Ellen Emilia Anna Zscheile
185c2972b7
chore(router/ng/mod): Run cargo fmt
2025-06-30 15:26:38 +02:00
Ellen Emilia Anna Zscheile
80a048faaf
fix(math/line): Fix offset of 'orthogonal_through' (which didn't match with the 'intersects' sign)
2025-06-30 15:26:08 +02:00
Ellen Emilia Anna Zscheile
30c6df31ab
chore(router/ng/mod): Get rid of unnecessary debugging output in calculate_navmesh
2025-06-30 15:16:21 +02:00
Ellen Emilia Anna Zscheile
e3790eb366
fix(router/ng/eval): Flip alignment of outer edges
...
This makes it possible to route some paths, altho it looks really wrong on first glace.
I don't yet know exactly what's going on.
2025-06-30 15:09:28 +02:00
Ellen Emilia Anna Zscheile
38ef4d4a59
refactor(math/line): Put functions regarding NormalLines and Lines into a separate file
2025-06-28 23:08:51 +02:00
Ellen Emilia Anna Zscheile
ff03083d65
chore(math/mod): Rename 'beam' to 'ray' in intersection functions
2025-06-28 23:03:09 +02:00
Ellen Emilia Anna Zscheile
59473c36c8
refactor(layout/layout): Put bands_between_* methods into separate file collect_bands.rs
2025-06-28 11:32:38 +02:00
Ellen Emilia Anna Zscheile
d3dc826be4
feat: Implement TopoNavmesh DualOuter-DualOuter extraction
...
This also fixes a sign bug in LineIntersection calculation
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile
cfde2eac20
fix(planar-incr-embed): Fix Edge lhs vs. rhs association
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile
ed06170db5
feat: Debug print various TopoNavmesh structures / updates
...
- feat(autorouter/execution): Debug-print the whole TopoNavmesh on completion
- feat(router/ng/poly): Emit log output on route_to_exit success
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile
a561b278fc
feat(router/ng/router): Implementation of the topological router
...
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
See also issue #166 .
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Ellen Emilia Anna Zscheile
c8848ef269
refactor(topola-egui): Move InteractiveEvent handling from Viewport into Workspace
2025-06-27 06:51:20 +02:00
Ellen Emilia Anna Zscheile
c66089bca9
fix(interactor/interactor): Factor out the logic for on-event activity updates
2025-06-27 06:12:38 +02:00