Units / intersect
intersect.surface_intersector_p3 partial
- Layer
- 34
- Upstream lines
- 1,932
- Functions
- 5
- Rust module
intersect::surface_intersector::p3
Source: crates/solidcore/src/intersect/surface_intersector/p3.rs
Upstream: source/SMLib/src/SmSurfaceIntersector.cpp
Notes
5 fns; largest: SmSurfaceIntersector::FindBoundaryStartPoints, SmSurfaceIntersector::TestPoint, SmSurfaceIntersector::ComputeNextPoint, sm_UpdateTsectPoint; unit-SCC #22 (220 units); 150 upstream test entry points reach this unit; PARTIAL (PR #56): difftest 1527 cases (17 inline edge cases, 10 fixture cases from my_test_planar_section on shovel.srf, 1500 generated programs: plane/plane traces at angles down to 1e-6 with through, start and end points, random programs on planes, B-spline and curve-bounded surfaces, boundary start point searches, scales 1e-6..1e5), 851 pass bit-identical (max_rel_err 0), 676 deferred (surface.surface_p11 353, surface.surface_p3 135, surface.surface_p8 79, surface.plane_p1 64, surface.surface_p5 28, blend.fillet_executive_p1 13, surface.surface_p6 4); --perturb SENSITIVE 851/851. UNPORTED stubs: SmSurface::GlobalCurveIntersect (surface.surface_p8), SmSurface::IsSingularity of non-planes (surface.surface_p5); SmSurface::DropAndTrimCurve wired to intersect.surface_drop_lib_p1 (PR #98; its trace defers to intersect.surface_drop_curve). The face edge branch (static constexpr bGWCAddEdgeThroughPoints = FALSE) and the bStopAtSingularity = FALSE code are dead upstream and not ported, so the planned topology back-edges (topology.edge, topology.edgeuse_p1, topology.edgeuse_p3, topology.face_p4) are not needed. find_boundary_start_points fetches caches with smsurf_GetSurfaceCache (tree build reaches surface.surface_p6); find_boundary_start_points_with_caches takes them from the caller. [surface.surface_p6 wired (PR #92): 1527 cases, 855 pass, 672 deferred (blend.fillet_executive_p1 13, surface.surface_cache_p1 64, surface.surface_p11 353, surface.surface_p3 135, surface.surface_p5 28, surface.surface_p8 79)] Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 1527 cases, 974 pass, 553 deferred (surface.surface_p11 395, surface.surface_p8 79, surface.surface_cache_p1 64, blend.fillet_executive_p1 15). surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1527 passed=1084 failed=0 deferred=443 (blend.fillet_executive_p1 17, surface.surface_cache_p1 67, surface.surface_p8 359); --perturb SENSITIVE. Re-run (PR #118, surface.surface_p8 and the p10 stubs wired): 1527 cases, 1006 pass, 521 deferred (surface.surface_p11 395, surface.surface_cache_p1 64, surface.surface_point_solve_p3 47, blend.fillet_executive_p1 15). Re-run (PR #118, round 3: GlobalCurveIntersect on the caller's cache; the runner builds real caches): 1527 cases, 1181 pass, 0 failed, 346 deferred (curve.iso_curve 250, surface.surface_cache_p1 77, blend.fillet_executive_p1 17, intersect.surface_drop_curve 2); --perturb SENSITIVE 1181/1181.
Difftest
- Cases
- 1,527
- Passed
- 1,181
- Deferred
- 346
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
curve.iso_curve green | 250 |
surface.surface_cache_p1 green | 77 |
blend.fillet_executive_p1 todo | 17 |
intersect.surface_drop_curve partial | 2 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent1d green geom.extent2d green geom.extent3d green geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green intersect.surface_intersector_p1 partial intersect.surface_intersector_p2 partial nurbs.b_spline_curve_p1 green surface.surface_p2 partial
Soft dependencies: curve.curve_p1 partial curve.curve_p4 partial curve.curve_p6 green geom.geom_utility_p1 green geom.object partial intersect.surface_drop_lib_p1 partial nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p2 green surface.surface_cache_p1 green surface.surface_p1 partial surface.surface_p5 green surface.surface_p7 partial surface.surface_p8 partial
Dependents: intersect.surface_intersector_p4 partial intersect.surface_intersector_p5 partial
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfaceIntersector::FindBoundaryStartPoints | SmSurfaceIntersector.cpp:1078 | 1083 | [SurfaceIntersector::find_boundary_start_points], [SurfaceIntersector::find_boundary_start_points_with_caches] |
SmSurfaceIntersector::ComputeNextPoint | SmSurfaceIntersector.cpp:3036 | 222 | [SurfaceIntersector::compute_next_point], [NextPoint] |
sm_UpdateTsectPoint | SmSurfaceIntersector.cpp:4262 | 78 | [SurfaceIntersector::update_tsect_point] |
SmSurfaceIntersector::TestPoint | SmSurfaceIntersector.cpp:4364 | 487 | [SurfaceIntersector::test_point] |
SmSurfaceIntersector::SplitSpan | SmSurfaceIntersector.cpp:7746 | 62 | [SurfaceIntersector::split_span] |
Module file-header table (6 rows)
| Rust | Upstream |
|---|---|
[SurfaceIntersector::find_boundary_start_points], [SurfaceIntersector::find_boundary_start_points_with_caches] | FindBoundaryStartPoints |
[SurfaceIntersector::compute_next_point], [NextPoint] | ComputeNextPoint |
[SurfaceIntersector::update_tsect_point] | sm_UpdateTsectPoint (static) |
[SurfaceIntersector::test_point] | TestPoint |
[SurfaceIntersector::split_span] | SplitSpan |
[TsectPnt::zeroed] | a point fresh from m_vTSPntMgr (zero-filled) |
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