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
Ellen Emilia Anna Zscheile
14287ca814
fix(interactor/interaction): fix warnings about unused arguments
2025-05-02 14:32:00 +02:00
Ellen Emilia Anna Zscheile
48efd5d3d9
feat(geometry/geometry): provide lookup of all rails around a core
2025-05-02 14:31:18 +02:00
Ellen Emilia Anna Zscheile
573f49f56f
chore(autorouter): fix warnings about unused RemoveBandsExecutionStepper
2025-05-02 01:53:49 +02:00
Ellen Emilia Anna Zscheile
46d3d0e4a0
feat(math): add cached variant of polygonal tangent calculation
2025-05-01 15:28:20 +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
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
f416958936
refactor(geometry): use more ergonomic petgraph methods where appropriate
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
c2bdeb61e4
fix(interactor): reliably, properly stop activity
2025-04-25 22:21:00 +02:00
Ellen Emilia Anna Zscheile
92e8600452
chore(autorouter): remove unnecessary mutability
2025-04-25 21:37:37 +02:00
Mikolaj Wielgus
368caa268f
docs(math): add some function docstrings
2025-04-25 02:16:10 +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
Mikolaj Wielgus
4bf3611bb7
style: rename `src/geometry/poly.rs` to `src/geometry/polygon.rs`
2025-04-22 20:42:14 +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
a56628e250
fix(specctra/design): handle polygon seg between first and last dot properly
2025-04-17 18:51:29 +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
cdee22d63e
feat(geometry/edit): impl ApplyGeometryEdit for GeometryEdit
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
22460c75f7
refactor(DrawingException): factor out extraction of ghost+obstacle
2025-03-31 02:27:56 +02:00
Ellen Emilia Anna Zscheile
566949d4c1
refactor(interactor): use enum_dispatch for ActivityStepper
2025-03-31 02:27:06 +02:00
Ellen Emilia Anna Zscheile
822bba8fde
refactor(drawing): more aggressive out-factoring in update_this_and_outward_bows
2025-03-29 16:00:24 +01:00
Ellen Emilia Anna Zscheile
da6b825ee7
refactor(drawing): deduplicate code in update_this_and_outward_bows
2025-03-29 15:53:19 +01:00
Ellen Emilia Anna Zscheile
c01c8046bb
chore: cargo fmt
2025-03-25 23:06:04 +01:00
Ellen Emilia Anna Zscheile
670ddbe1f7
chore: apply clippy fixes
2025-03-25 00:17:57 +01:00
Ellen Emilia Anna Zscheile
13f2400c45
refactor(drawing): simplify traits
2025-03-22 04:06:27 +00:00
Ellen Emilia Anna Zscheile
a836189086
refactor: simplify interface of NavcordStepper
2025-03-22 04:06:27 +00:00
Ellen Emilia Anna Zscheile
da3be763c6
feat(overlay,viewport): generation and rendering of topological navmesh
2025-03-04 02:47:04 +01:00
Ellen Emilia Anna Zscheile
6eb941a137
feat: merge planar-brute-embed into the topola monorepo
...
- feat: use OrderedPair instead of custon BandName/BandUid (note: changes ordering of BandUid)
- fix(crates): rename planar-brute-embed to planar-incr-embed
2025-02-16 18:31:31 +01:00
Ellen Emilia Anna Zscheile
a39546f0c9
fix(RouteStepper): borrowing mixup
2025-02-15 13:46:16 +01:00
Ellen Emilia Anna Zscheile
a7c8474153
fix(RouteStepper): proper undo in case of failure
...
Fixes #116
(hopefully)
2025-02-15 13:36:32 +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
61c7b5450f
refactor(Retag): only implement trait once, Index should be associated type
2025-02-10 11:29:08 +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