svg_path/intersections2

Experimental window-preserving curve intersection search.

Unlike svg_path/intersections, this module treats parameter rectangles as the search state. It discards a rectangle only when exact curve-piece bounds separate, and uses chord crossing as positive evidence for a transverse root. The implementation is intentionally separate while its contracts and tangency behavior are evaluated.

Types

pub type Window {
  Window(
    left_from: Float,
    left_to: Float,
    right_from: Float,
    right_to: Float,
  )
}

Constructors

  • Window(
      left_from: Float,
      left_to: Float,
      right_from: Float,
      right_to: Float,
    )

Values

pub fn segment(
  left: svg_path.Segment,
  right: svg_path.Segment,
) -> Result(List(svg_path.SegmentIntersection), svg_path.Error)

Find intersections while preserving parameter windows.

Transverse roots are seeded by chord crossings and refined by tangent-line Newton steps. Nontransverse contacts remain discoverable through exact curve-piece bounding-box subdivision and coincident terminal samples.

pub fn segment_with(
  left: svg_path.Segment,
  right: svg_path.Segment,
  tolerance tolerance: Float,
  max_depth max_depth: Int,
) -> Result(List(svg_path.SegmentIntersection), svg_path.Error)

Find intersections with explicit geometric tolerance and subdivision depth.

Search Document