pub fn pole_crossings(
model: &mut Model,
face: &Shape,
tol: Tolerances,
) -> OgeomResult<Vec<(Shape, Shape)>>Expand description
The wires of face whose crossings of poles a reader of the chart
takes the wrong way, each paired with a rebuilt wire holding a
degenerate edge across every pole it crosses; empty where none is.
A joint is at a pole where the end of one edge’s pcurve and the start of the next’s stand apart in the chart along one parameter direction, and the whole row of the chart through them, sampled across the surface’s domain, lifts onto the joint vertex within its tolerance: the surface collapses that row. Every other joint must meet, or stand a whole number of periods apart where the chart repeats (a seam’s two columns); a wire with any other gap is left as it is.
Across a repeating row each crossing may run the shortest way or a
whole turn either way more. The wire is solved for the one choice
under which its chart, unrolled, closes on itself and encloses area
the right way round: positive for a face’s first wire, negative for
its holes, read with the face stored forward. Where exactly one choice
does and it is not the shortest way at every pole, each pole gets a
degenerate edge spanning its crossing; where the shortest way is the
answer, a reader of the chart already reads it, and nothing is made.
Only unplaced pcurves and vertices are read; a placed boundary is left
as it is. The wires are made with Model::add_wire, the face itself
untouched: the caller puts them in.
§Errors
OgeomError::Dangling if the face,
its surface, an edge or a pcurve is not in model.