solidcore

Units / intersect

intersect.surface_intersector_p5 partial

Layer
36
Upstream lines
622
Functions
1
Rust module
intersect::surface_intersector::p5

Source: crates/solidcore/src/intersect/surface_intersector/p5.rs

Upstream: source/SMLib/src/SmSurfaceIntersector.cpp

Notes

1 fns; largest: SmSurfaceIntersector::DoIntersection; unit-SCC #22 (220 units); 150 upstream test entry points reach this unit; PARTIAL (PR #82): DoIntersection ported on AdvSurfaceIntersector (every upstream caller's class) with GrazingBoxProcess; difftest 1725 cases (94 review adversarial fixture cases; 131 inline edge cases: unit-square planes and their bilinear B-splines apart, corner touching out/back/coplanar, edge coplanar/folded, parallel, coincident, near parallel, crossing, tiny, each without/with edges, thin boxes and real caches, plus a self intersection; 1500 generated scenes at scales 1e-3..1e4 with hand-built trees swapped into the real C++ caches, optional tolerances, curve-bounded surfaces), 577 pass bit-identical (max_rel_err 0; touching points, boundary grazes, disjoint/empty results, intersector state), 0 failed, 1148 deferred (surface.surface_cache_p1 449: SmPlane::CreateIsoParametricCurve in the cache; surface.surface_p8 291: GlobalCurveIntersect; surface.surface_p11 234: LocalSurfaceIntersect; surface.surface_p6 174: CalculateContinuities in every real cache build); --perturb detects 577/577; DISPATCH GAP: TraceCurve uses the basic ComputeSingularityPoint (see plan/findings.md) [surface.surface_p6 wired (PR #92): 1725 cases, 672 pass, 1053 deferred (surface.surface_cache_p1 488, surface.surface_p11 252, surface.surface_p8 313)] surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1725 passed=807 failed=0 deferred=918 (intersect.surface_intersector_p2 117, surface.surface_cache_p1 488, surface.surface_p8 313); --perturb SENSITIVE. Re-run (PR #118, surface.surface_p8 wired, round 3): cases=1725 passed=1009 failed=0 deferred=716 (surface.surface_cache_p1 490, intersect.surface_intersector_p2 122, intersect.surface_drop_curve 104); --perturb SENSITIVE 1009/1009. The 53 disagreements of the first wiring came from GlobalCurveIntersect building its own surface cache: the hand-built trees swapped into the C++ caches are what upstream's nested GlobalCurveIntersect/GlobalLineIntersect solve on; FindBoundaryStartPoints now hands it the intersector's cache (global_curve_intersect_in), and do_intersection's caches name their surfaces (IntersectionSurface).

Difftest

Cases
1,725
Passed
1,009
Deferred
716
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
surface.surface_cache_p1 green490
intersect.surface_intersector_p2 partial122
intersect.surface_drop_curve partial104

Report JSON (per-case results)

Dependencies

Depends on: geom.extent3d green geom.global_solver partial geom.solution_array partial geom.tol green intersect.surface_intersector_p1 partial intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial intersect.surface_intersector_p4 partial

Soft dependencies: curve.curve_p2 green curve.curve_p4 partial geom.a_object partial geom.object partial geom.tree partial geom.vector3d green surface.surface_cache_p1 green surface.surface_cache_p3 partial surface.surface_p2 partial

Dependents: audit.recursion todo

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmSurfaceIntersector::DoIntersectionSmSurfaceIntersector.cpp:6106622[AdvSurfaceIntersector::do_intersection], [AdvSurfaceIntersector::do_intersection_with_caches]
Module file-header table (3 rows)
RustUpstream
[AdvSurfaceIntersector::do_intersection], [AdvSurfaceIntersector::do_intersection_with_caches]DoIntersection
[intersection_surface_caches], [IntersectionSurface]the smsurf_GetSurfaceCache / GetTree calls at the top of DoIntersection
[SurfaceIntersector::grazing_box_process], [GrazingBox]GrazingBoxProcess

Upstream tests reaching this unit

prog_test:my_test_parallel_projection, prog_test:my_test_tsurf_projection, prog_test:my_test_surface_interface, prog_test:my_test_ssi, prog_test:my_test_tsurf_section, prog_test:my_test_planar_section