solidcore

Units / intersect

intersect.surface_intersector_p4 partial

Layer
35
Upstream lines
1,570
Functions
4
Rust module
intersect::surface_intersector::p4

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

Upstream: source/SMLib/src/SmSurfaceIntersector.cpp

Notes

4 fns; largest: SmSurfaceIntersector::TraceCurve, SmSurfaceIntersector::DoPointIntersection, SmSurfaceIntersector::DoLawIntersection, SmSurfaceIntersector::FindInteriorCurves; unit-SCC #22 (220 units); 150 upstream test entry points reach this unit; PARTIAL (PR #70): difftest 1542 cases (22 inline edge cases, 20 fixture cases from my_test_planar_section on shovel.srf, 1500 generated programs on plane pairs crossing down to 1e-6 rad, coincident, parallel a gap apart or the same object, scales 1e-6..1e5: DoPointIntersection through 0-5 points with directions/extensions/tolerances, TraceCurve from evaluated or raw points with curve points, targets and curves to avoid, then FlushCurve, DoLawIntersection point counts, FindInteriorCurves; a few on B-spline and curve-bounded surfaces), 938 pass bit-identical (max_rel_err 0), 604 deferred (surface.surface_p11 578, surface.surface_p3 26); --perturb SENSITIVE 938/938. UNPORTED stubs: SmSurface::IsSingularity of non-planes (surface.surface_p5); the SM_SR_NODES node pairs of FindInteriorCurves' GlobalSurfaceSolve (surface.surface_p11; the pair walk is find_interior_curves_from_node_pairs). DoLawIntersection's SmOffsetSurface check sees SurfaceKind::OffsetSurface (surface.offset_surface, PR #62); past it the law points wait on SmFilletLaw::Evaluate (blend.fillet_executive_p1). Back-edges NOT wired: SmAdvSurfaceIntersector's TraceCurve (intersect/adv_surface_intersector.rs) and SmSurface::PointBasedSurfaceIntersect's DoPointIntersection (surface/surface/p2.rs) run on the advanced intersector, whose ComputeSingularityPoint override the basic part 1-4 methods cannot dispatch to yet; the stubs stay tagged UNPORTED(intersect.surface_intersector_p4) with that reason. surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1542 passed=1177 failed=0 deferred=365 (surface.surface_p8 365); FindInteriorCurves runs the SM_SR_NODES global surface solve; --perturb SENSITIVE.

Difftest

Cases
1,542
Passed
1,192
Deferred
350
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
curve.iso_curve green350

Report JSON (per-case results)

Dependencies

Depends on: geom.extent2d green geom.extent3d green geom.solution_array partial geom.vector2d green geom.vector3d green intersect.surface_intersector_p1 partial intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial

Soft dependencies: curve.curve_cache green curve.curve_p2 green curve.hermite_curve green geom.a_object partial geom.extent1d green geom.object partial geom.tol green geom.tree partial nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p3 partial surface.surface_cache_p1 green surface.surface_p11 partial surface.surface_p2 partial surface.surface_p5 green surface.surface_p7 partial

Dependents: intersect.surface_intersector_p5 partial

Soft dependents: blend.fillet_geom_p3 todo blend.fillet_solver_p4 claimed blend.fillet_standard_solver_p2 todo

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmSurfaceIntersector::TraceCurveSmSurfaceIntersector.cpp:4920649[SurfaceIntersector::trace_curve]
SmSurfaceIntersector::FindInteriorCurvesSmSurfaceIntersector.cpp:5935159[SurfaceIntersector::find_interior_curves], [SurfaceIntersector::find_interior_curves_from_node_pairs], [InteriorNodePair]
SmSurfaceIntersector::DoPointIntersectionSmSurfaceIntersector.cpp:6763492[SurfaceIntersector::do_point_intersection], [PointIntersectionOptions]
SmSurfaceIntersector::DoLawIntersectionSmSurfaceIntersector.cpp:7817270[SurfaceIntersector::do_law_intersection], [LawIntersectionOptions]
Module file-header table (5 rows)
RustUpstream
[SurfaceIntersector::trace_curve]TraceCurve
[SurfaceIntersector::find_interior_curves], [SurfaceIntersector::find_interior_curves_from_node_pairs], [InteriorNodePair]FindInteriorCurves
[SurfaceIntersector::do_point_intersection], [PointIntersectionOptions]DoPointIntersection
[SurfaceIntersector::do_law_intersection], [LawIntersectionOptions]DoLawIntersection
[IntersectionCurve]the curve, type and deviation out-params of both drivers

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