solidcore

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 unitDeferred cases
intersect.surface_intersector_p2 partial2

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 functionDefined atLinesRust (from the file header)
SmAdvSurfaceIntersector::~SmAdvSurfaceIntersectorSmAdvSurfaceIntersector.h:481Drop (implicit)
SmAdvSurfaceIntersector::SmAdvSurfaceIntersectorSmAdvSurfaceIntersector.cpp:2720[AdvSurfaceIntersector], [AdvSurfaceIntersector::new]
sm_AddSingDirSmAdvSurfaceIntersector.cpp:5426add_sing_dir (private)
SmAdvSurfaceIntersector::ComputeSingularityPointSmAdvSurfaceIntersector.cpp:116855[AdvSurfaceIntersector::compute_singularity_point], [AdvSurfaceIntersector::compute_singularity_point_on]
SmAdvSurfaceIntersector::MakeDupinSmAdvSurfaceIntersector.cpp:988145[AdvSurfaceIntersector::make_dupin], [Dupin]
SmAdvSurfaceIntersector::FindInteriorCurvesSmAdvSurfaceIntersector.cpp:1139230[AdvSurfaceIntersector::find_interior_curves], [InteriorCurves]
SmAdvSurfaceIntersector::SolveBranchSmAdvSurfaceIntersector.cpp:1380102[GlobalSolve::solve_branch] (impl)
SmAdvSurfaceIntersector::LocalSolveSmAdvSurfaceIntersector.cpp:1515191[GlobalSolve::local_solve] (impl)
SmAdvSurfaceIntersector::BranchIsGaussSeparateSmAdvSurfaceIntersector.cpp:171323[AdvSurfaceIntersector::branch_is_gauss_separate]
sm_FindLargestNonLeafSmAdvSurfaceIntersector.cpp:174241find_largest_non_leaf (private)
SmAdvSurfaceIntersector::FindBestSubdivisionNodeSmAdvSurfaceIntersector.cpp:179212[GlobalSolve::find_best_subdivision_node] (impl)
Module file-header table (14 rows)
RustUpstream
[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