Commit Graph

185 Commits

Author SHA1 Message Date
Mikolaj Wielgus 3e466960fa feat(router/prenavmesh): Have fillets as prenavnodes instead of long vertex chains 2025-08-31 14:34:28 +02:00
Mikolaj Wielgus a9cb7f8848 fix(router/navmesh): Use union-find to have all overlapping navnodes actually added 2025-08-28 17:15:28 +02:00
Mikolaj Wielgus 0f4bf1b0be fix(router/navmesh): Make sure all clearance-intersecting navnodes have the same edges
This does not yet fully fix the problem with routing around SMD pads
failing, but is a step forward.
2025-08-28 11:35:20 +02:00
Mikolaj Wielgus 310e983b1d refactor(drawing/drawing): Move infringement and collision detection to drawing/query 2025-08-25 02:23:02 +02:00
Mikolaj Wielgus ca4a2d1cbf refactor(drawing/query): Rename collect.rs to query.rs, change trait to direct impl 2025-08-24 22:31:10 +02:00
Mikolaj Wielgus 6cb01dbb2a refactor(router/thetastar): Factor out returning status 2025-08-24 00:12:45 +02:00
Mikolaj Wielgus fca8e44269 feat(router/router): Backtrack if initial parent was on the same compound 2025-08-24 00:12:38 +02:00
Mikolaj Wielgus b21f77c9ab feat(router/thetastar): Transition state for each backtrack step for better debugging 2025-08-23 12:09:45 +02:00
Mikolaj Wielgus 5a1cb564dc refactor(router/thetastar): Backtrack not once, but repeatedly, if condition is met 2025-08-23 12:09:45 +02:00
Mikolaj Wielgus cc6065099b fix(router/thetastar): Don't forget to rm. probe when there's shorter path already
This fixes a fatal race condition that made tht_de9_to_tht_de9 always
fail since 7eff7ad9f0a24a9688ab5235f01115f7c85b1ff4.
2025-08-19 15:55:20 +02:00
Mikolaj Wielgus 7bb1a1efbc docs: Add some comments warning about race conditions, rename some identifiers 2025-08-19 15:55:20 +02:00
Mikolaj Wielgus 3738bacf6f fix(math/bitangents): Calculate bitangents even for intersecting circles
This fixes the bug where the router was failing to draw around SMD pads.
2025-08-19 15:46:12 +02:00
Mikolaj Wielgus 7fbfed710c refactor(drawing/guide): Make method names somewhat clearer 2025-08-15 23:50:11 +02:00
Mikolaj Wielgus 177c8abb18 refactor(drawing/guide): Instead of trait, just impl guide methods on `Drawing` 2025-08-15 23:31:23 +02:00
Mikolaj Wielgus 9819879617 feat(topola-egui): Display guide-circles on debug overlay 2025-08-15 16:18:31 +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 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 4d5fc25ae3 refactor(drawing/drawing): Some minor changes to method naming, comments, contracts 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 0752817538 refactor(autorouter/ratsnest): Split out ratline code to new file, ratline.rs 2025-07-14 13:26:38 +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 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 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 a4b1b3893c feat: Add interaction stepper for route building 2025-06-27 06:02:05 +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 2e84380344 chore(router/draw): Make API of 'extend_head' more ergonomic 2025-06-01 14:02:28 +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
Mikolaj Wielgus e92864d58b fix(router/astar): Do not panic if navnode visit fails, just skip it
I have renamed some trait functions to make it clearer what they do, and
clarified some comments.
2025-05-25 18:04:18 +02:00
Mikolaj Wielgus 24d119ad04 refactor(router/navmesh): Rename "navvertex" to "navnode"
Easier to pronounce.
2025-05-25 18:01:26 +02:00
Mikolaj Wielgus 464e8abb89 docs(router/astar): Make some small improvements to docs 2025-05-21 00:29:13 +02:00
Mikolaj Wielgus e79078e971 fix(router/router): Calculate A* navedge cost correctly
The length of the past head depends on what was previously in the same
scan, so it can't be relied on. Instead, we just add the length of the
bend that is immediately before the probe.
2025-05-21 00:29:13 +02:00