Commit Graph

1028 Commits

Author SHA1 Message Date
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
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 792f9b56ea chore(planar-incr-embed): provide `remove_path` also for plain `edge_paths` 2025-05-02 14:29:49 +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 c74e593c2d feat(planar-incr-embed): logged edge count of normal edges only 2025-05-01 23:29:25 +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 594bb51a57 chore: Use `committed` instead of `conventional-pre-commit`
The most important difference in this PR is that we now enforce scope
and subject line length. `conventional-pre-commit`, which we have been
using until now, does not appear to allow that unlike `committed` which
we will be now using.

On the other hand, `committed` doesn't allow to require having a scope,
unlike `conventional-pre-commit`, but I will probably submit them a PR
for this later.

I also find it questionable that disabling particular checks is to be
done by switching boolean options to false. Doing so by string options
would be more future-proof.

Also note that this has a check to make sure the commit message starts
with a verb. I am fine with this myself, but it may be an overkill.
2025-04-30 11:22:23 +00: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
Mikolaj Wielgus 640247a675 fix(topola-egui): clamp timestep slider to 0.001-3.0 instead of 0.0-3.0
Timestep should never be set to 0 because this freezes the GUI if the
execution takes a long time.

Of course, this solution assumes that any lengthy operation is split
into sufficiently fine steppable steps.

Fixes https://codeberg.org/topola/topola/issues/203
2025-04-26 04:02:06 +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
Ellen Emilia Anna Zscheile f4f8971662 chore(planar-incr-embed): make some utilities public for downstream reuse 2025-04-25 13:25:28 +02:00
Ellen Emilia Anna Zscheile a6f86f488c feat(planar-incr-embed): add convenience method to remove paths from navmesh 2025-04-25 13:23:47 +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 3a2c9deff0 feat(planar-incr-embed): make PmgAstar's evaluate_navmesh interface way more ergonomic 2025-04-10 22:16:59 +02:00
Ellen Emilia Anna Zscheile bb1cfc76d9 fix(planar-incr-embed): discover all possible paths, including the variants re: weak entries 2025-04-10 22:16:59 +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 bf1addbdaf chore: fix some more clippy warnings 2025-03-31 01:58:34 +02:00