Mikolaj Wielgus
1694227135
feat(router/navmesh): Reduce number of navedges
...
This provides a speedup, but may break squeezing through under bends in
some corner cases.
2025-11-16 23:38:00 +01:00
Mikolaj Wielgus
00aa79ff31
feat(drawing/query): Don't infringe or collide primitives on different layers
2025-09-22 01:27:08 +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
da37fbe2ec
feat(board/mod): Make it possible to iterate over nodes under pin name
2025-09-19 13:05:31 +02:00
Mikolaj Wielgus
c50c520e7c
chore: Fix nightly build error due to calling function with wrong name
2025-09-16 14:07:18 +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
aee8c42720
feat(autorouter/presorter): Take into account ratline-pad intersections
2025-09-11 23:25:03 +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
c2cd565a9b
refactor(drawing/gear): Remove `GetPrevNextInChain` trait
...
It wasn't helpful after all.
2025-09-02 22:32:49 +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
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
41438eeccc
feat(drawing/gear): Implement finding next and previous gear in chain for fixed dots
2025-08-26 00:23: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
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
fac52f9d8b
fix(drawing/drawing): Don't infringe on and from loose dots
...
These resulted in false positives for line-of-sight paths.
2025-08-12 22:04:21 +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
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
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
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
1505513552
feat(drawing/drawing): Store boundaries in Drawing
2025-06-10 15:37:47 +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
Ellen Emilia Anna Zscheile
56cc737b82
fix(autorouter/autoroute): Only route each pin-pin connection at most once
...
Fixes #219 .
2025-05-26 14:17:11 +02:00
Mikolaj Wielgus
8647df026d
refactor(geometry/edit): "merge" instead of "apply" edit on another edit
...
This is just a small terminological distinction.
2025-05-26 02:44: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
Mikolaj Wielgus
464e8abb89
docs(router/astar): Make some small improvements to docs
2025-05-21 00:29:13 +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
Ellen Emilia Anna Zscheile
ee19ae934f
fix(drawing/bend): Improve handling of almost equal points in perp_dot_product
2025-05-20 00:13:07 +02:00
Ellen Emilia Anna Zscheile
e448f86374
refactor(drawing): make traits more strict
2025-05-06 22:22:57 +00:00
Mikolaj Wielgus
873d9a84ab
fix(drawing/drawing): Prevent self-intersecting loops on band draw finish
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
c849b6ff1d
fix(drawing/drawing): Don't check initial canes for same-net collision
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
9bfed2d28e
docs(drawing/drawing): Explain difference between infringements and collisions
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
680a813a33
fix(drawing/drawing): Prevent self-intersecting band loops from forming
...
Fixes https://codeberg.org/topola/topola/issues/205
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
6175f7aec2
refactor(drawing/drawing): Ignore infringees using filter predicate instead of slice
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
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
f6a196aeca
fix(drawing): make update_this_and_outward_bows fail graceful (with temporary fix)
2025-04-17 22:36:10 +00:00
Ellen Emilia Anna Zscheile
77969952ff
refactor(geometry/edit): GeometryEdit shouldn't know about PrimitiveIndex
2025-04-08 02:06:57 +00:00