Units / intersect
intersect.adv_surface_intersector partial
- Layer
- 33
- Upstream lines
- 1,646
- Functions
- 11
- Rust module
intersect::adv_surface_intersector
Source: crates/solidcore/src/intersect/adv_surface_intersector.rs
Upstream: source/SMLib/inc/SmAdvSurfaceIntersector.h, source/SMLib/src/SmAdvSurfaceIntersector.cpp
Notes
PARTIAL: difftest 1931 cases (398 review fixtures: adversarial singular-point programs; 27 inline edge cases from the ComputeSingularityPoint docs + 6 LocalSolve/SolveIt cases on leaves >4x apart in size (DropPointsToTangentPlane) + 1500 generated programs: singular points with shape-tensor geometry, Dupin indicatrices, SolveIt/LocalSolve/SolveBranch/FindBestSubdivisionNode/BranchIsGaussSeparate/FindInteriorCurves over hand-built surface cache trees), 1915 pass bit-identical, 16 deferred (surface.surface_p11 16: LocalSurfaceIntersect in FindInteriorCurves); wired the surface.surface_p7 stubs (DropPointsToTangentPlane, non-planar EvaluateNormal; CreateParallelProjectionCurves now stops at intersect.surface_intersector_p5 DoIntersection); wired UNPORTED(intersect.adv_surface_intersector) in surface.surface_p2 (GlobalSurfaceIntersect, PointBasedSurfaceIntersect now stop at intersect.surface_intersector_p5 / _p4); base SolveBranch exposed as geom::global_solver::solve_branch; 11 fns; largest: SmAdvSurfaceIntersector::ComputeSingularityPoint, SmAdvSurfaceIntersector::FindInteriorCurves, SmAdvSurfaceIntersector::LocalSolve, SmAdvSurfaceIntersector::MakeDupin; cycle back-edges (call into later units; stub or co-port): intersect.surface_intersector_p2(2), blend.fillet_intersector(1), intersect.surface_intersector_p4(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1931 passed=1929 failed=0 deferred=2 (intersect.surface_intersector_p2 2); --perturb SENSITIVE.
Difftest
- Cases
- 1,931
- Passed
- 1,929
- Deferred
- 2
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.surface_intersector_p2 partial | 2 |
Report JSON (per-case results)
Dependencies
Depends on: curve.conic green geom.extent2d green geom.extent3d green geom.global_solver partial geom.pseudo_box green geom.solution_array partial geom.vector2d green geom.vector3d green intersect.surface_intersector_p1 partial surface.surface_cache_p1 green surface.surface_p2 partial
Soft dependencies: geom.geom_utility_p1 green geom.object partial geom.polar_box green geom.tree partial surface.surface_p11 partial surface.surface_p7 partial
Dependents: blend.fillet_intersector claimed
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmAdvSurfaceIntersector::~SmAdvSurfaceIntersector | SmAdvSurfaceIntersector.h:48 | 1 | Drop (implicit) |
SmAdvSurfaceIntersector::SmAdvSurfaceIntersector | SmAdvSurfaceIntersector.cpp:27 | 20 | [AdvSurfaceIntersector], [AdvSurfaceIntersector::new] |
sm_AddSingDir | SmAdvSurfaceIntersector.cpp:54 | 26 | add_sing_dir (private) |
SmAdvSurfaceIntersector::ComputeSingularityPoint | SmAdvSurfaceIntersector.cpp:116 | 855 | [AdvSurfaceIntersector::compute_singularity_point], [AdvSurfaceIntersector::compute_singularity_point_on] |
SmAdvSurfaceIntersector::MakeDupin | SmAdvSurfaceIntersector.cpp:988 | 145 | [AdvSurfaceIntersector::make_dupin], [Dupin] |
SmAdvSurfaceIntersector::FindInteriorCurves | SmAdvSurfaceIntersector.cpp:1139 | 230 | [AdvSurfaceIntersector::find_interior_curves], [InteriorCurves] |
SmAdvSurfaceIntersector::SolveBranch | SmAdvSurfaceIntersector.cpp:1380 | 102 | [GlobalSolve::solve_branch] (impl) |
SmAdvSurfaceIntersector::LocalSolve | SmAdvSurfaceIntersector.cpp:1515 | 191 | [GlobalSolve::local_solve] (impl) |
SmAdvSurfaceIntersector::BranchIsGaussSeparate | SmAdvSurfaceIntersector.cpp:1713 | 23 | [AdvSurfaceIntersector::branch_is_gauss_separate] |
sm_FindLargestNonLeaf | SmAdvSurfaceIntersector.cpp:1742 | 41 | find_largest_non_leaf (private) |
SmAdvSurfaceIntersector::FindBestSubdivisionNode | SmAdvSurfaceIntersector.cpp:1792 | 12 | [GlobalSolve::find_best_subdivision_node] (impl) |
Module file-header table (14 rows)
| Rust | Upstream |
|---|---|
[AdvSurfaceIntersector], [AdvSurfaceIntersector::new] | SmAdvSurfaceIntersector, its constructor |
Drop (implicit) | ~SmAdvSurfaceIntersector |
[AdvSurfaceIntersector::set_surface_caches] | m_apTrees[i] = smsurf_GetSurfaceCache(..)->GetTree() of the callers |
add_sing_dir (private) | sm_AddSingDir (static) |
[AdvSurfaceIntersector::compute_singularity_point], [AdvSurfaceIntersector::compute_singularity_point_on] | ComputeSingularityPoint |
[AdvSurfaceIntersector::make_dupin], [Dupin] | MakeDupin |
[AdvSurfaceIntersector::find_interior_curves], [InteriorCurves] | FindInteriorCurves |
[GlobalSolve::solve_branch] (impl) | SolveBranch |
[GlobalSolve::local_solve] (impl) | LocalSolve |
[AdvSurfaceIntersector::branch_is_gauss_separate] | BranchIsGaussSeparate |
find_largest_non_leaf (private) | sm_FindLargestNonLeaf (static) |
[GlobalSolve::find_best_subdivision_node] (impl) | FindBestSubdivisionNode |
[AdvSurfaceIntersector::is_kind_of], [TYPE] | IsKindOf, SmAdvSurfaceIntersector_TYPE |
[NoSurfaceHandle] | (none: the handle type of an intersector without caches) |
Upstream tests reaching this unit
prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon