Finish the convex hull node: in-repo algorithm, robustness, and tests

Replaces the WIP node crate, which depended on a convex_hull crate that
only existed outside the repository, with a self-contained implementation:

- The curved hull algorithm lives in vector-types' algorithms module. It
  splits curves at inflections and cusps into curvature-monotone arcs,
  discovers the boundary structure from a sampled polygonal hull, refines
  every transition to an exact tangency with closed-form quartic
  tangent-through-point solves, then emits the boundary as cuts of the
  original segments joined by straight bridge lines.

- The node moves into vector-nodes alongside the other 'Vector: Modifier'
  nodes, ported to the List/attributes model. It accepts Graphic[] or
  Vector[], wraps every subpath (open or closed) and free-floating anchor
  point across all items, and outputs a single world-space hull path.

- The boolean-union pre-pass is dropped as unnecessary: the hull of all
  segments equals the hull of their union, and the polyline connector it
  relied on lost floating points and mishandled open paths.
This commit is contained in:
Keavon Chambers
2026-07-06 19:24:11 -07:00
parent 0c216d2871
commit 4169277508
8 changed files with 1120 additions and 483 deletions
-1
View File
@@ -44,7 +44,6 @@ text-nodes = { workspace = true }
transform-nodes = { workspace = true }
vector-nodes = { workspace = true }
path-bool-nodes = { workspace = true }
convex-hull-nodes = { workspace = true }
math-nodes = { workspace = true }
rendering = { workspace = true }
graphene-application-io = { workspace = true }
-1
View File
@@ -7,7 +7,6 @@ pub mod render_pixel_preview;
pub mod text;
pub use blending_nodes;
pub use brush_nodes as brush;
pub use convex_hull_nodes;
pub use core_types::*;
pub use graphene_application_io as application_io;
pub use graphene_core;