Skip to main content

pole_crossings

Function pole_crossings 

Source
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.