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
cfd20ed381
feat: Implement line (segment) intersection check
2025-06-11 16:37:57 +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
3c807b5078
refactor(specctra/design): Resolve image once per component
2025-06-02 22:57:45 +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
3ae298e4e9
feat(topola-egui): AppearancePanel active_layer selection should be explicit
2025-06-01 02:16:41 +02:00
Ellen Emilia Anna Zscheile
d1bcf22e96
feat(math/polygon_tangents): Add unit tests for triangle case
2025-05-30 21:32:13 +02:00
Ellen Emilia Anna Zscheile
eff197d410
chore: Update committed.toml
2025-05-30 21:06:42 +02:00
Ellen Emilia Anna Zscheile
c41627b023
chore(math/polygon_tangents): Fix clippy warnings
2025-05-30 21:04:43 +02:00
Ellen Emilia Anna Zscheile
42cf8f3a69
fix(math/cyclic_search): Use classic binary search instead
...
It is unnecessary to use exponential search here, and the
computation complexity of binary search is easier to understand
and obvious O(log n).
This degrades performance minimally in biased edge cases,
and improves performance in the hopefully common
"roughly half of values are false, and other half is true" case.
2025-05-30 21:04:30 +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
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
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
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
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
ded1ec8ece
fix(router/draw): Undo modification of old cane head on failure
2025-05-20 01:05:05 +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
d553fd6ba7
fix(router): attempt to fix autorouter
2025-05-17 16:32:15 +02:00
Outbreak2096
7a246be3a1
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (53 of 53 strings)
Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/zh_Hans/
2025-05-17 10:45:25 +00:00
fogti
82d78b3a15
Translated using Weblate (German)
...
Currently translated at 100.0% (53 of 53 strings)
Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/de/
2025-05-17 10:45:25 +00:00
Ellen Emilia Anna Zscheile
bdebdacd8a
chore: Fix 'unused' imports/code warnings
2025-05-17 12:45:03 +02:00
Ellen Emilia Anna Zscheile
2394fa6256
feat(geometry/geometry): Add convenience GetPetgraphIndex impls
2025-05-17 02:43:19 +02:00
Mikolaj Wielgus
f9b1cc2cbf
refactor(autorouter/invoker): Add default impls. to invoker's stepper traits
2025-05-16 17:28:10 +00: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
Mikolaj Wielgus
7d5da2c797
docs(router/astar): Explain the meaning of every continue status
2025-05-16 17:28:10 +00:00
Mikolaj Wielgus
a0ab7e2818
refactor(router/astar): Have separate statuses for discarded probes and skipped visits
...
This is mostly to improve readability. Since we don't check the values
of the continue statuses anywhere anyway, this doesn't result in any
changes to code outside of the router/astar module.
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
7d59ffd5be
docs: Add screenshot of illustration of polygon tangents
...
Signed-off-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-05-14 12:49:09 +02:00
Ellen Emilia Anna Zscheile
7faac709e0
docs: Add screenshot of illustration for pie' closed curve
...
Signed-off-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-05-13 14:29:42 +02:00
Mikolaj Wielgus
1fe87635bf
chore: Run `committed HEAD` in addition to `committed develop..HEAD` in CI
...
This will make the CI detect malformed commit messages pushed straight
to the development branch without a PR.
2025-05-13 00:33:27 +02:00
Ellen Emilia Anna Zscheile
776ffb00ad
chore: bump dependencies
2025-05-12 19:30:27 +02:00
Ellen Emilia Anna Zscheile
5f19624d4e
docs(stepper): fix broken internal link in docs
2025-05-12 19:08:12 +02:00
Mikolaj Wielgus
7dc275969c
refactor(router/astar): Rename `Astar<...>` to `AstarStepper<...>`
...
Since it is a stepper, and we append -`Stepper` to identifiers denoting
types that are steppers.
2025-05-12 16:58:06 +02:00
Mikolaj Wielgus
0df68ee80c
docs(stepper): Explain how stepper traits and navcord work
...
Navcord is special because we advance its state in a way that is similar
to how steppers are stepped but it actually is not a stepper.
2025-05-12 16:58:02 +02:00
Mikolaj Wielgus
47371fdf3f
refactor(router/navcord): Make it clear that navcord is not a stepper
...
Rename `NavcordStepper<...>` to `Navcord<...>. Since the navcord is not
actually considered a true stepper, having the word "stepper" in its
identifier would confuse anyone new to source-diving Topola's code.
Rename Navcord's `.step(...)` to `.step_to(...)` to make it clear
that this is not just a step like in a stepper, but a step to a some
specified position.
2025-05-12 00:45:51 +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
Mikolaj Wielgus
cea96b20a0
docs(topola-egui): Explain some parts of app's code
2025-05-04 22:54:11 +02:00