Commit Graph

825 Commits

Author SHA1 Message Date
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
Ellen Emilia Anna Zscheile a4b1b3893c feat: Add interaction stepper for route building 2025-06-27 06:02:05 +02:00
Mikolaj Wielgus 03ed35cbc4 fix(drawing/drawing): Fix squeezing through under bends by flipping CW/CCW
I don't know what was the original cause of this bug, but this seems to
solve the problem.
2025-06-25 20:11:49 +02:00
Ellen Emilia Anna Zscheile 896deb1777 docs(math/polygon_tangents): Fix `CachedPolyExt` doc-comment 2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile 03d85b8566 feat(math/polygon_tangents): Implement polygon handover
Fixes #240
2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile 371d13e7e1 fix(math/polygon_tangents): Fix usual triangle case
See also issue #238.

This does not fix the case where all nodes of the convex hull lie on some tangent.
2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile bbd8d78089 refactor(math/polygon_tangents): Reduce code duplication 2025-06-12 23:33:30 +02:00
Mikolaj Wielgus 3ec15db5bc docs(router/thetastar): Add some explanatory comments 2025-06-12 16:45:07 +02:00
Mikolaj Wielgus 1630ed1a45 refactor(router/thetastar): Store edge ids in `Vec<...>` instead of `VecDeque<...>` 2025-06-12 16:45:07 +02:00
Mikolaj Wielgus 437e2f96d1 fix(router/navcord): Correctly take into account length of final termseg 2025-06-12 16:45:07 +02:00
Mikolaj Wielgus d0c304adbd feat(router/thetastar): Implement Theta* search algorithm
Closes https://codeberg.org/topola/topola/issues/121
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus 1fea359a40 refactor(router/astar): Rewrite A* like a more typical state machine 2025-06-12 16:45:07 +02:00
Mikolaj Wielgus 0702b7eb8c refactor(router/astar): Use getters instead of `pub` members 2025-06-12 16:45:07 +02:00
Ellen Emilia Anna Zscheile cfd20ed381 feat: Implement line (segment) intersection check 2025-06-11 16:37:57 +02:00
Ellen Emilia Anna Zscheile 1505513552 feat(drawing/drawing): Store boundaries in Drawing 2025-06-10 15:37:47 +02:00
Ellen Emilia Anna Zscheile 3c807b5078 refactor(specctra/design): Resolve image once per component 2025-06-02 22:57:45 +02:00
Ellen Emilia Anna Zscheile 2e84380344 chore(router/draw): Make API of 'extend_head' more ergonomic 2025-06-01 14:02:28 +02:00
Ellen Emilia Anna Zscheile 3ae298e4e9 feat(topola-egui): AppearancePanel active_layer selection should be explicit 2025-06-01 02:16:41 +02:00
Ellen Emilia Anna Zscheile d1bcf22e96 feat(math/polygon_tangents): Add unit tests for triangle case 2025-05-30 21:32:13 +02:00
Ellen Emilia Anna Zscheile c41627b023 chore(math/polygon_tangents): Fix clippy warnings 2025-05-30 21:04:43 +02:00
Ellen Emilia Anna Zscheile 42cf8f3a69 fix(math/cyclic_search): Use classic binary search instead
It is unnecessary to use exponential search here, and the
computation complexity of binary search is easier to understand
and obvious O(log n).
This degrades performance minimally in biased edge cases,
and improves performance in the hopefully common
"roughly half of values are false, and other half is true" case.
2025-05-30 21:04:30 +02:00
Ellen Emilia Anna Zscheile 864cf9085a fix(drawing/band): BandTermsegIndex computation should be fallible
Fixes #221.
2025-05-26 14:51:23 +02:00