Mikolaj Wielgus
64a519420f
fix(autorouter/anterouter): Remove fanout if seg addition fails
2025-10-17 22:26:07 +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
f1e65267da
refactor(triangulation): Don't use `.graph()` when creating triangulations
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
03e70a1a7e
fix(router/navmesh): Don't unionize with fillets
2025-08-31 21:05: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
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
fca8e44269
feat(router/router): Backtrack if initial parent was on the same compound
2025-08-24 00:12:38 +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
0752817538
refactor(autorouter/ratsnest): Split out ratline code to new file, ratline.rs
2025-07-14 13:26:38 +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
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
24d119ad04
refactor(router/navmesh): Rename "navvertex" to "navnode"
...
Easier to pronounce.
2025-05-25 18:01:26 +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
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
869d63f7c0
fix(navmesh): NavvertexIndex debug output should state what it is
2025-02-02 22:30:37 +01:00
Ellen Emilia Anna Zscheile
f2969decd0
feat/debug: make core::fmt::Debug output easier to read
2025-02-02 22:01:25 +01:00
Mikolaj Wielgus
9664f1a31a
fix: get rid of some indeterminism by using B-trees instead of hash maps
...
I have replaced all instances of `HashMap<...>` with `BTreeMap<...>`,
of `HashSet<...>` with `BTreeSet<...>`, and all the uses of the `Hash`
trait with `Ord`.
I have done a few manual tests and found the behavior to be
deterministic between the GUI application launches. However, undoing an
autoroute command and then manually executing it once again continues to
produce variable results. I suppose this is because of some bug in the
code where edits are applied. Hence, the issue
https://codeberg.org/topola/topola/issues/46
is only partially resolved.
2025-01-04 01:56:00 +01:00
Mikolaj Wielgus
44c30caafe
chore(licensing): add REUSE license headers to `**.{rs,md,toml}` files
...
I ran the following command in Fish shell:
```
reuse annotate --skip-unrecognised --copyright="Topola contributors" --license="MIT" **.{rs,md,toml}
```
The choice of year 2024 in the copyright statements is intentional.
2024-12-29 22:47:00 +01:00
Mikolaj Wielgus
1567a9a83e
style: rename "squeeze through under bands" to "(...) bends"
...
Everywhere except in translatable strings. I'm not changing these
because I prefer this to be done via Weblate.
2024-12-29 01:43:36 +01:00
Alain Emilia Anna Zscheile
82bf647bc5
doc(router/navmesh): document maybe_cw
...
Doc Comment content taken from @mikolaj, Topola Matrix Chat.
2024-12-14 19:56:29 +01:00
Mikolaj Wielgus
c87224e99a
docs(router): add and rewrite some navmesh and navcord docstrings
2024-12-07 05:53:39 +01:00
Mikolaj Wielgus
638979364c
docs(drawing): rephrase docstrings
2024-12-01 23:42:40 +01:00
Alain Emilia Anna Zscheile
ddbaf2abe5
chore: fix cargo fmt
2024-11-15 20:46:29 +01:00
hakki
c1271e570e
docs: navigation mesh documented
2024-10-29 19:53:47 +01:00
Mikolaj Wielgus
bfcae7f308
egui: change "squeeze under" to "squeeze through under"
...
It's about pushing through a constrained space, not about squeezing
per se. I'm not using the word "push" because this term will probably be
restricted to a mechanism that is very different internally.
2024-10-02 01:12:46 +02:00
Alain Emilia Anna Zscheile
f653a96eb0
chore: trivial fixes of clippy warnings
2024-10-01 20:50:38 +00:00
Mikolaj Wielgus
4b6e3e0a5c
egui,router: add option to toggle squeezing
2024-09-01 01:24:52 +02:00
Mikolaj Wielgus
0b7e5f1b9b
egui,autorouter,router: add option to toggle wrapping around bands
2024-08-31 14:12:38 +02:00
Mikolaj Wielgus
4d0c38664e
router: have a binavvertex on each bend
2024-08-31 01:37:27 +02:00
Mikolaj Wielgus
994b9e8e9b
navmesh: some rearrangements in preparation for interactive routing
2024-08-29 02:04:27 +02:00
Mikolaj Wielgus
ace5709e5d
cleanup: `cargo fix`, `cargo fmt` to reduce number of error messages
2024-07-15 13:14:17 +02:00
Mikolaj Wielgus
806742736a
cleanup: get rid of `*Trait` names for traits, use verbs and sentences
2024-07-03 13:40:37 +02:00
Mikolaj Wielgus
27d1c9e712
router: step on every probe, not only navvertices
2024-07-02 02:36:42 +02:00
Mikolaj Wielgus
47c888d21b
egui,autorouter,router: restore highlighting active navmesh edges
2024-07-01 18:56:41 +02:00
Mikolaj Wielgus
0419904b3f
router: re-encapsulate graph in `Navmesh` and vertices in `VertexIndex`
...
As in previous commit, this was done in the past, but I removed it when
improving `Navmesh` to hold each navvertex instead of calculating tem
during access.
2024-06-26 22:34:59 +02:00
Mikolaj Wielgus
5254f768e5
router: implement (again) graph traversal traits for `Navmesh`
...
These were implemented in the past, but I removed it when I made
`Navmesh` store each navvertex instead of calculating tem on the fly.
2024-06-26 20:27:29 +02:00
Mikolaj Wielgus
0777b781f4
router: have two navvertices, CW and CCW, for each trianvertex
2024-06-22 17:33:11 +02:00
Mikolaj Wielgus
169ddf7d80
egui: add button to toggle showing navmesh
2024-06-20 19:33:18 +02:00
Mikolaj Wielgus
4540f5c96b
router: impl. forgotten addition of edges to navmesh
2024-06-20 18:50:50 +02:00