Commit Graph

1220 Commits

Author SHA1 Message Date
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
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 8e3be44e18 feat(pie/PmgAstar): support threading a context along 2025-03-23 10:42:11 +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 112cc0686d feat(egui): partially disable menus again
The upstream bug got fixed: https://github.com/emilk/egui/issues/4774#event-16792829596
2025-03-18 04:37:48 +01:00