Commit Graph

10 Commits

Author SHA1 Message Date
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
Ellen Emilia Anna Zscheile a561b278fc feat(router/ng/router): Implementation of the topological router
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
  See also issue #166.
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Ellen Emilia Anna Zscheile 896deb1777 docs(math/polygon_tangents): Fix `CachedPolyExt` doc-comment 2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile 03d85b8566 feat(math/polygon_tangents): Implement polygon handover
Fixes #240
2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile 371d13e7e1 fix(math/polygon_tangents): Fix usual triangle case
See also issue #238.

This does not fix the case where all nodes of the convex hull lie on some tangent.
2025-06-12 23:33:30 +02:00
Ellen Emilia Anna Zscheile bbd8d78089 refactor(math/polygon_tangents): Reduce code duplication 2025-06-12 23:33:30 +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 c41627b023 chore(math/polygon_tangents): Fix clippy warnings 2025-05-30 21:04:43 +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