Commit Graph

164 Commits

Author SHA1 Message Date
Mikolaj Wielgus dd8a4c5808 fix(autorouter/conncomps): Take into account vias when computing connected components 2025-10-19 22:31:16 +02:00
Mikolaj Wielgus 10dc1a86aa refactor(layout/layout): Add method to retrieve fixed dot's via (not used yet) 2025-10-19 20:51:44 +02:00
Mikolaj Wielgus 2f7cee62a6 fix(autorouter/anterouter): Use correct ratline principal layer instead of layer 0 2025-10-17 23:21:32 +02:00
Mikolaj Wielgus 64a519420f fix(autorouter/anterouter): Remove fanout if seg addition fails 2025-10-17 22:26:07 +02:00
Mikolaj Wielgus c630abcdc1 feat(autorouter/anterouter): Anteroute fanouts farther than other-layer obstacles 2025-10-07 13:28:23 +02:00
Mikolaj Wielgus 8095c3a89a feat(autorouter/anterouter): Don't anteroute fanout vias inside polys 2025-10-06 13:18:19 +02:00
Mikolaj Wielgus 26ed61ad4d feat(autorouter/anterouter): Anteroute fanout segs to fanout vias 2025-10-03 15:55:58 +02:00
Mikolaj Wielgus 2ebd7ce82d feat(autorouter/anterouter): Fanout only in cardinal directions
This works around the falsely positively fillet exclusions our current
navmesh creation method causes.
2025-10-03 13:12:35 +02:00
Mikolaj Wielgus 9a5b2095d5 feat(autorouter/autorouter): Implement germ of multilayer autorouting 2025-09-27 15:45:10 +02:00
Mikolaj Wielgus f4b78749b1 feat(topola-egui): Show shape of infringee in addition to inflated infringer's 2025-09-21 20:22:20 +02:00
Mikolaj Wielgus 50597653ad refactor(geometry/geometry): Remove `.graph()` and its remaining usages
This will allow us to store the dots, segs, bends differently than currently.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus e0cfc521ef refactor(geometry/geometry): Replace `NodeIndex<usize>` with just `usize`
This is a step towards ceasing to use Petgraph as internal storage for
geometry.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus 6a2102e0a2 refactor(graph): Rename `GetPetgraphIndex` to `GetIndex` 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus 7c4bc87301 refactor(drawing/primitive): Rename Primitive<...> to PrimitiveRef<...> with its variants 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus eb0ee25565 fix(drawing/drawing): Don't infringe upon wraparound limbs and its fillets' limbs
Sadly, this degrades performance considerably. But we will improve it later.
2025-09-03 01:00:18 +02:00
Mikolaj Wielgus 9f7e10bc03 refactor(drawing/drawing): Add filtering predicate also for `.insert_cane(...)` 2025-09-02 19:58:30 +02:00
Mikolaj Wielgus 3ddf382325 refactor(drawing/drawing): Remove `*_with_infringement_filtering` suffix
Having a filter predicate is useful too often to keep two sets of
methods.
2025-09-02 19:46:39 +02:00
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 4a057d3499 fix(math/mod): Move code pertaining to circles to new file, circle.rs 2025-08-29 13:36:48 +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 191e646d68 refactor(math/line): Rename `NormalLine` to `LineInGeneralForm`
The previous name sounded as if it was a normal (to some surface), which
is not the case.
2025-08-12 20:01:16 +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
Ellen Emilia Anna Zscheile 4fea23c9ac chore: Fix warnings about lifetime annotations 2025-07-17 12:33:31 +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 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
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 b75101cb83 fix(router/router): Replace LoS-based A* termination with correctly searched one 2025-05-21 00:29:13 +02:00
Mikolaj Wielgus 873d9a84ab fix(drawing/drawing): Prevent self-intersecting loops on band draw finish 2025-05-05 22:38:06 +00:00
Ellen Emilia Anna Zscheile 83d9fce38c fix(geometry/compound): rename CompoundEntryKind -> CompoundEntryLabel 2025-04-30 14:18:22 +02:00
Ellen Emilia Anna Zscheile e74f5e009a fix(layout/poly): merge all the iterations over nodes in 'add_poly_with_nodes_intern' 2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile 187f06a9ac chore(layout): move most of 'add_poly_with_nodes' method into poly.rs 2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile 8a66ece14c feat(layout): cache convex hull on polygon initialization 2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile 861869ab7c refactor(geometry): introduce CompoundEntryKind to suppport entry metadata
example usages would be marking the apex of a polygon explicitly,
or marking the nodes of a polygon which are part of the convex hull

- make ManageCompounds more generic
- removes unnecessary bounds on handles/refs
2025-04-30 14:11: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
Ellen Emilia Anna Zscheile 346477f498 chore(layout): remove unused 'add_poly_fixed_*' methods 2025-04-22 22:51:51 +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 122ff0122f fix(board): make Poly' apex generation non-lazy
- insert polygon parts before polygon compound
2025-04-17 15:03:14 +02:00
Ellen Emilia Anna Zscheile 77969952ff refactor(geometry/edit): GeometryEdit shouldn't know about PrimitiveIndex 2025-04-08 02:06:57 +00: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 670ddbe1f7 chore: apply clippy fixes 2025-03-25 00:17:57 +01:00
Ellen Emilia Anna Zscheile bb86aaed2a minimal backend for `planar-brute-embed` topological navmesh generation (#161)
Reviewed-on: https://codeberg.org/topola/topola/pulls/161
Co-authored-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-02-15 00:00:15 +00:00
Ellen Emilia Anna Zscheile 0fde34204f refactor(drawing,geometry): move GetLayer from drawing::graph to geometry 2025-02-10 11:30:54 +01:00
Ellen Emilia Anna Zscheile 1e690ace11 refactor(drawing): factor out common {Bend,Dot,Seg}Weight fields 2025-02-10 11:29:08 +01:00
Ellen Emilia Anna Zscheile cf36177097 refactor: don't export modules only containing a single item 2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile ea6df23b95 feat(selection): BBox selection should span all currently visible layers
In Via, is_in_layer, `from_layer` and `to_layer` were swapped,
this has been also fixed here.
2025-01-09 18:59:07 +00:00
Alain Emilia Anna Zscheile 699bd58949 refactor(geometry): merge GetPos and SetPos 2025-01-07 21:11:51 +00:00