pub struct SurfaceIntersectionOptions {
pub tolerance: f64,
pub seed_density: f64,
pub maximum_steps: usize,
pub maximum_step: Option<f64>,
pub seed_points: Vec<Vec3>,
pub seed_only: bool,
pub seed_gate: Option<f64>,
pub span_budget: Option<f64>,
pub ordered_starts: bool,
pub consume_starts: bool,
pub tree_seeds: bool,
}Fields§
§tolerance: f64§seed_density: f64§maximum_steps: usize§maximum_step: Option<f64>§seed_points: Vec<Vec3>§seed_only: bool§seed_gate: Option<f64>§span_budget: Option<f64>When set, every accepted span is re-sampled as the cubic Hermite through its two stations — chord-scaled tangents, in 3D and in each carrier’s parameter plane — at five interior parameters, and the span’s deviation is the largest distance among the 3D Hermite and the two carriers’ images of their parameter Hermites. A span over the budget is rejected and re-stepped at half the step (accepted at the minimum step regardless), and the step grows only while the deviation stays under an eighth of the budget. The curve then reports its station tangents and its largest span deviation.
None, the default, measures nothing and marches exactly as before.
The budget a lane carries is what its FIT can absorb (the imprint’s
intersection_fit), never the corrector’s tolerance: a cubic
Hermite over a circle of radius r with step h misses by about
r (h/r)^4 / 384, so a budget of 1e-7 would hold the step near
r/15 and multiply stations on every curved section.
ordered_starts: boolOff, the default, keeps the grid-then-seeds order byte for byte.
consume_starts: boolA3’s second half: a start an earlier trace ran through is consumed with a station snapped to it (the start is a refined intersection point, the chord it lies by is not), instead of merely dropped. Off, the default, keeps the first-claimant rule. Measured apart from the ordering because it inserts stations into traced curves.
tree_seeds: boolThe transverse gate stays. Off, the default, grids as before.