Commit Graph

111 Commits

Author SHA1 Message Date
Mikolaj Wielgus 800db3d4c0 refactor(topola-egui): Split some parts of `Viewport` code to methods 2025-07-15 02:13:56 +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 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 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 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 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 6f20994dab feat(topola-egui): Add checkbox to hide pathfinding scores 2025-06-18 18:07:43 +02:00
Ellen Emilia Anna Zscheile 353ee9a7ab fix(specctra-core): Actually use Keepouts structure 2025-06-12 23:27:52 +02:00
Ellen Emilia Anna Zscheile 9ea058bd0a fix(specctra-core): Proper support for all kinds of keepouts 2025-06-12 20:08:08 +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 0702b7eb8c refactor(router/astar): Use getters instead of `pub` members 2025-06-12 16:45:07 +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 33eb593fe9 fix(specctra-core): Fix boundary parsing
see also https://gitlab.com/kicad/code/kicad/-/blob/master/pcbnew/specctra_import_export/specctra.h, class BOUNDARY
2025-06-07 13:13:49 +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
Mikolaj Wielgus 24d119ad04 refactor(router/navmesh): Rename "navvertex" to "navnode"
Easier to pronounce.
2025-05-25 18:01:26 +02:00
Ellen Emilia Anna Zscheile 8d0681c07d fix(topola-egui): Fix click-based selection of pins
- Do intersection calculation between DotShape and Rect=AABB properly
2025-05-21 01:02:12 +02:00
Ellen Emilia Anna Zscheile bdebdacd8a chore: Fix 'unused' imports/code warnings 2025-05-17 12:45:03 +02:00
Mikolaj Wielgus 53f937f14f feat(topola-egui): Display A*'s g-scores and f-scores 2025-05-16 17:28:10 +00:00
Mikolaj Wielgus 97b1315eee refactor(autorouter/invoker): Expose getter for whole A* stepper, not just navmesh
Besides owning the navmesh, the A* stepper stores g-scores and f-scores,
displaying which will be helpful for debugging, so we want to be able to
access the whole A* stepper instead of only the navmesh.
2025-05-16 17:28:10 +00:00
Ellen Emilia Anna Zscheile b5b14e6329 feat(topola-egui): Allow using Shift+{arrow keys} to scroll viewport using keyboard
Fixes #188.
2025-05-15 16:55:13 +02:00
Ellen Emilia Anna Zscheile 776ffb00ad chore: bump dependencies 2025-05-12 19:30:27 +02:00
Mikolaj Wielgus cea96b20a0 docs(topola-egui): Explain some parts of app's code 2025-05-04 22:54:11 +02:00
Ellen Emilia Anna Zscheile 792f9b56ea chore(planar-incr-embed): provide `remove_path` also for plain `edge_paths` 2025-05-02 14:29:49 +02:00
Ellen Emilia Anna Zscheile c74e593c2d feat(planar-incr-embed): logged edge count of normal edges only 2025-05-01 23:29:25 +02:00
Ellen Emilia Anna Zscheile 7799c50829 feat(math): implement search for boundaries of partitions in cyclic partitioned lists.
e.g. find the bounds of false, true in [false, true, true, false, false]
under the condition that the blocks in partitions of a single value are connected,
meaning when considering the list as cyclic, there are at most 2 blocks (for value true, false).
This implements only the binary case.

Exponential search was suggested by Harold Aptroot <@harold@mastodon.gamedev.place>

Example/motivating use case: detecting which parts of the exterior of a Polygon
  face towards a point, and which parts don't, in particular finding the (extremal) points
  contained in the tangents. This use case is implemented in `poly_ext_tangent_points`.

Signed-off-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-05-01 15:28:20 +02:00
Mikolaj Wielgus f7cd817457 feat(autorouter/invoker): Create trait to display debug information on navmesh 2025-05-01 01:59:31 +02:00
Mikolaj Wielgus b000f2b7d8 refactor(math): Replace `cw` booleans with `RotationSense` enums
The term "cw" (clockwise) was somewhat cryptic, using a more verbose
term improves readability.
2025-04-29 13:58:49 +02:00
Mikolaj Wielgus 640247a675 fix(topola-egui): clamp timestep slider to 0.001-3.0 instead of 0.0-3.0
Timestep should never be set to 0 because this freezes the GUI if the
execution takes a long time.

Of course, this solution assumes that any lengthy operation is split
into sufficiently fine steppable steps.

Fixes https://codeberg.org/topola/topola/issues/203
2025-04-26 04:02:06 +02:00
Ellen Emilia Anna Zscheile f4f8971662 chore(planar-incr-embed): make some utilities public for downstream reuse 2025-04-25 13:25:28 +02:00
Ellen Emilia Anna Zscheile a6f86f488c feat(planar-incr-embed): add convenience method to remove paths from navmesh 2025-04-25 13:23:47 +02:00
Mikolaj Wielgus b736aa2d7d refactor(layout::poly): use `MakeRef<...>` to obtain poly's ref-struct 2025-04-22 21:59:45 +02:00
Ellen Emilia Anna Zscheile 3a2c9deff0 feat(planar-incr-embed): make PmgAstar's evaluate_navmesh interface way more ergonomic 2025-04-10 22:16:59 +02:00
Ellen Emilia Anna Zscheile bb1cfc76d9 fix(planar-incr-embed): discover all possible paths, including the variants re: weak entries 2025-04-10 22:16:59 +02:00
Ellen Emilia Anna Zscheile e20c9aa3d6 feat(specctra-core/mesadata, layout): make `Layout` clonable
This change also propagates to `SpecctraMesadata`, which is a bit unfortunate,
because the code that needs this will never mutate the mesadata,
wrapping it in an `Arc` would be a possible alternative.
2025-03-31 02:30:26 +02:00
Ellen Emilia Anna Zscheile bf1addbdaf chore: fix some more clippy warnings 2025-03-31 01:58:34 +02:00
Ellen Emilia Anna Zscheile 8e3be44e18 feat(pie/PmgAstar): support threading a context along 2025-03-23 10:42:11 +01:00
Ellen Emilia Anna Zscheile 112cc0686d feat(egui): partially disable menus again
The upstream bug got fixed: https://github.com/emilk/egui/issues/4774#event-16792829596
2025-03-18 04:37:48 +01:00
Ellen Emilia Anna Zscheile ae40efbfa2 feat(specctra_derive): implement for enums containing unnamed fields 2025-03-10 04:10:45 +00:00
Mikolaj Wielgus f7ac667e1d chore(cargo): bump `icu_experimental` dependency version to 0.3.0-beta2
This should fix the CI failure.
2025-03-10 04:35:34 +01:00
Mikolaj Wielgus 946afc413d chore(cargo): bump `icu_locale_core` dependency version to 2.0.0-beta2 2025-03-10 03:10:06 +01:00
Ellen Emilia Anna Zscheile da3be763c6 feat(overlay,viewport): generation and rendering of topological navmesh 2025-03-04 02:47:04 +01:00