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 unit | Deferred cases |
|---|---|
surface.surface_cache_p1 green | 490 |
intersect.surface_intersector_p2 partial | 122 |
intersect.surface_drop_curve partial | 104 |
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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfaceIntersector::DoIntersection | SmSurfaceIntersector.cpp:6106 | 622 | [AdvSurfaceIntersector::do_intersection], [AdvSurfaceIntersector::do_intersection_with_caches] |
Module file-header table (3 rows)
| Rust | Upstream |
|---|---|
[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