solidcore

Units / surface

surface.surface_point_solve_p1 green

Layer
32
Upstream lines
1,771
Functions
49
Rust module
surface::surface_point_solve::p1

Source: crates/solidcore/src/surface/surface_point_solve/p1.rs

Upstream: source/SMLib/src/SmSurfacePointSolve.cpp

Notes

49 fns; largest: SmSurfPtGlobalSolver::RefineGuessPolygonLeg, WellBehavedControlNet, SmSurfPtGlobalSolver::FindPolygonTriangleGuess, SmSurfPtGlobalSolver::CheckGuessForSeams; unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; PARTIAL (PR #58): difftest 1035 cases (135 inline on upstream Surface.sms with the my_test_surface_closest_point points, 900 generated: planes, B-splines incl. closed / rational / bilinear / zigzag / huge / tiny nets, curve-bounded and STEP-wrapped surfaces, sub-domains, the 5 solver operations, test points on, near and off the surface), 976 pass bit-identical, 59 deferred (surface.surface_p5 32, surface.surface_p4 27); --perturb SENSITIVE Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 1035 cases, 1003 pass, 32 deferred (curve.iso_curve 32). PR #106: the stepper Normal accessor retains its cached normal after ordinary evaluation failure, like C++; missing dependencies still propagate. Native collapsed-surface regressions cover this in p2/p3. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 1035 cases, 1035 pass, 0 deferred, 0 failed, max_rel_err 0.

Difftest

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

Blocked by

Nothing: no deferred cases.

Report JSON (per-case results)

Dependencies

Depends on: geom.extent1d green geom.extent2d green geom.extent3d green geom.vector2d green geom.vector3d green nurbs.b_spline_surface_p1 green surface.surface_p1 partial surface.surface_p2 partial

Soft dependencies: curve.curve_p6 green geom.geom_utility_p1 green geom.geom_utility_p2 green geom.object partial geom.tol green nurbs.b_spline_curve_p1 green surface.offset_surface green surface.surface_p4 green surface.surface_p5 green surface.surface_p7 partial

Dependents: surface.surface_point_solve_p2 green surface.surface_point_solve_p3 green

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmSurfacePointSolver::~SmSurfacePointSolverSmSurfacePointSolve.cpp:741
SmSurfacePointSolver::SurfacePtrSmSurfacePointSolve.cpp:821[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfacePointSolver::TestPointSmSurfacePointSolve.cpp:831[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfacePointSolver::DomainSmSurfacePointSolve.cpp:841[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfacePointSolver::SolverOpSmSurfacePointSolve.cpp:851[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfacePointSolver::TightTolSmSurfacePointSolve.cpp:871[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfacePointSolver::LooseTolSmSurfacePointSolve.cpp:881[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]
SmSurfPtSolveStepper::SetUVSmSurfacePointSolve.cpp:2593[SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step]
SmSurfPtSolveStepper::UVSmSurfacePointSolve.cpp:2631[SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step]
SmSurfPtSolveStepper::MaxStepSmSurfacePointSolve.cpp:2641[SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step]
SmSurfPtSolveStepper::PosSmSurfacePointSolve.cpp:2661[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::SuSmSurfacePointSolve.cpp:2671[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::SvSmSurfacePointSolve.cpp:2681[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::SuuSmSurfacePointSolve.cpp:2691[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::SuvSmSurfacePointSolve.cpp:2701[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::SvvSmSurfacePointSolve.cpp:2711[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::NormalSmSurfacePointSolve.cpp:2731[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]
SmSurfPtSolveStepper::GapSmSurfacePointSolve.cpp:2751[SurfPtSolveStepper::gap], [SurfPtSolveStepper::gap_u], [SurfPtSolveStepper::gap_v], [SurfPtSolveStepper::gap_length]
SmSurfPtSolveStepper::GapLengthSmSurfacePointSolve.cpp:2781[SurfPtSolveStepper::gap], [SurfPtSolveStepper::gap_u], [SurfPtSolveStepper::gap_v], [SurfPtSolveStepper::gap_length]
SmSurfPtSolveStepper::NRStepSuspectSmSurfacePointSolve.cpp:2811[SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect]
SmSurfPtSolveStepper::SetIterCountSmSurfacePointSolve.cpp:2831[SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect]
SmSurfPtSolveStepper::SetNRSuspectSmSurfacePointSolve.cpp:2841[SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect]
SmSurfPtSolveStepper::BoundHitsUSmSurfacePointSolve.cpp:2861[SurfPtSolveStepper::bound_hits_u], [SurfPtSolveStepper::bound_hits_v]
SmSurfPtSolveStepper::BoundHitsVSmSurfacePointSolve.cpp:2871[SurfPtSolveStepper::bound_hits_u], [SurfPtSolveStepper::bound_hits_v]
SmSurfPtSolveStepper::SmSurfPtSolveStepperSmSurfacePointSolve.cpp:29046[SurfPtSolveStepper], [SurfPtSolveStepper::new]
SmSurfPtSolveStepper::~SmSurfPtSolveStepperSmSurfacePointSolve.cpp:3421
SmSurfPtSolveStepper::ClampSmSurfacePointSolve.cpp:3651[SurfPtSolveStepper::clamp]
SmSurfacePointSolver::SmSurfacePointSolverSmSurfacePointSolve.cpp:40665[SurfacePointSolver], [SurfacePointSolver::new]
SmSurfacePointSolver::SmSurfacePointSolverSmSurfacePointSolve.cpp:47713[SurfacePointSolver], [SurfacePointSolver::new]
SmSurfacePointSolver::operator=SmSurfacePointSolve.cpp:49615Clone, Clone::clone_from, Drop (implicit)
SmSurfPtGlobalSolver::SmSurfPtGlobalSolverSmSurfacePointSolve.cpp:51721[SurfPtGlobalSolver], [SurfPtGlobalSolver::new]
SmSurfPtGlobalSolver::ClosedSurfaceSmSurfacePointSolve.cpp:54422[SurfPtGlobalSolver::closed_surface]
SmSurfPtGlobalSolver::CalcFuncValSmSurfacePointSolve.cpp:57444[SurfPtGlobalSolver::calc_func_val]
GetTrianglesDistSmSurfacePointSolve.cpp:102857[triangles_dist]
WellBehavedControlNetSmSurfacePointSolve.cpp:1095177[well_behaved_control_net]
SmSurfPtGlobalSolver::FindPolygonTriangleGuessSmSurfacePointSolve.cpp:1294168[SurfPtGlobalSolver::find_polygon_triangle_guess], [PolygonTriangleGuess]
SmSurfPtGlobalSolver::RefineGuessPolygonLegSmSurfacePointSolve.cpp:1476224[SurfPtGlobalSolver::refine_guess_polygon_leg]
SmSurfPtGlobalSolver::CheckBadGuessStrideSmSurfacePointSolve.cpp:190387[SurfPtGlobalSolver::check_bad_guess_stride]
SmSurfPtGlobalSolver::CheckGuessForSeamsSmSurfacePointSolve.cpp:221659[SurfPtGlobalSolver::check_guess_for_seams]
SmSurfPtGlobalSolver::CheckGuessForSeamsSmSurfacePointSolve.cpp:2284112[SurfPtGlobalSolver::check_guess_for_seams]
SmSurfPtGlobalSolver::GetCreaseSubdomainsSmSurfacePointSolve.cpp:240397[SurfPtGlobalSolver::crease_subdomains]
SmSurfPtGlobalSolver::IsLocalMinSmSurfacePointSolve.cpp:266885[SurfPtGlobalSolver::is_local_min], [SurfPtGlobalSolver::is_local_max]
SmSurfPtGlobalSolver::IsLocalMaxSmSurfacePointSolve.cpp:276166[SurfPtGlobalSolver::is_local_min], [SurfPtGlobalSolver::is_local_max]
SmSurfPtGlobalSolver::PushingBoundarySmSurfacePointSolve.cpp:285563[SurfPtGlobalSolver::pushing_boundary]
SmSurfPtSolveStepper::operator=SmSurfacePointSolve.cpp:319828Clone, Clone::clone_from, Drop (implicit)
SmSurfPtSolveStepper::EvalSmSurfacePointSolve.cpp:323251[SurfPtSolveStepper::eval], [StepperValues]
SmSurfPtSolveStepper::HitBoundSmSurfacePointSolve.cpp:341846[SurfPtSolveStepper::hit_bound]
SmSurfPtSolveStepper::CheckBoundsSmSurfacePointSolve.cpp:389493[SurfPtSolveStepper::check_bounds], [BoundsCheck]
SmSurfPtSolveStepper::DropToIsoCurveSmSurfacePointSolve.cpp:4680104[SurfPtSolveStepper::drop_to_iso_curve]
Module file-header table (30 rows)
RustUpstream
[SurfacePointSolver], [SurfacePointSolver::new]SmSurfacePointSolver (constructor)
Clone, Clone::clone_from, Drop (implicit)SmSurfacePointSolver copy constructor, operator=, destructor
[SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol]SurfacePtr, TestPoint, Domain, SolverOp, TightTol, LooseTol
[SurfacePointSolver::dir_vec], [SurfacePointSolver::b_spline]m_sDirVec, m_pBSplSrf (protected members)
[SurfPtGlobalSolver], [SurfPtGlobalSolver::new]SmSurfPtGlobalSolver (constructor)
[SurfPtGlobalSolver::closed_surface]SmSurfPtGlobalSolver::ClosedSurface
[SurfPtGlobalSolver::calc_func_val]SmSurfPtGlobalSolver::CalcFuncVal
[SurfPtGlobalSolver::find_polygon_triangle_guess], [PolygonTriangleGuess]SmSurfPtGlobalSolver::FindPolygonTriangleGuess
[SurfPtGlobalSolver::refine_guess_polygon_leg]SmSurfPtGlobalSolver::RefineGuessPolygonLeg
[SurfPtGlobalSolver::check_bad_guess_stride]SmSurfPtGlobalSolver::CheckBadGuessStride
[SurfPtGlobalSolver::check_guess_for_seams]SmSurfPtGlobalSolver::CheckGuessForSeams (UV point)
[SurfPtGlobalSolver::check_guess_for_seams_cpts]SmSurfPtGlobalSolver::CheckGuessForSeams (control points)
[SurfPtGlobalSolver::crease_subdomains]SmSurfPtGlobalSolver::GetCreaseSubdomains
[SurfPtGlobalSolver::is_local_min], [SurfPtGlobalSolver::is_local_max]SmSurfPtGlobalSolver::IsLocalMin, IsLocalMax
[SurfPtGlobalSolver::pushing_boundary]SmSurfPtGlobalSolver::PushingBoundary
[triangles_dist]GetTrianglesDist (static)
[well_behaved_control_net]WellBehavedControlNet (static)
[ErrorNormType]SmSrfPtErrorNormType
[SurfPtSolveStepper], [SurfPtSolveStepper::new]SmSurfPtSolveStepper (constructor)
[SurfPtSolveStepper::copy_of], [SurfPtSolveStepper::assign], Drop (implicit)copy constructor, operator=, destructor
[SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step]SetUV, UV, MaxStep
[SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal]Pos, Su, Sv, Suu, Suv, Svv, Normal
[SurfPtSolveStepper::gap], [SurfPtSolveStepper::gap_u], [SurfPtSolveStepper::gap_v], [SurfPtSolveStepper::gap_length]Gap, GapU, GapV, GapLength
[SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect]IterCount, SetIterCount, NRStepSuspect, SetNRSuspect
[SurfPtSolveStepper::bound_hits_u], [SurfPtSolveStepper::bound_hits_v]BoundHitsU, BoundHitsV
[SurfPtSolveStepper::eval], [StepperValues]SmSurfPtSolveStepper::Eval (private)
[SurfPtSolveStepper::clamp]Clamp
[SurfPtSolveStepper::hit_bound]HitBound
[SurfPtSolveStepper::check_bounds], [BoundsCheck]CheckBounds
[SurfPtSolveStepper::drop_to_iso_curve]DropToIsoCurve

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