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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfacePointSolver::~SmSurfacePointSolver | SmSurfacePointSolve.cpp:74 | 1 | |
SmSurfacePointSolver::SurfacePtr | SmSurfacePointSolve.cpp:82 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfacePointSolver::TestPoint | SmSurfacePointSolve.cpp:83 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfacePointSolver::Domain | SmSurfacePointSolve.cpp:84 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfacePointSolver::SolverOp | SmSurfacePointSolve.cpp:85 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfacePointSolver::TightTol | SmSurfacePointSolve.cpp:87 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfacePointSolver::LooseTol | SmSurfacePointSolve.cpp:88 | 1 | [SurfacePointSolver::surface], [SurfacePointSolver::test_point], [SurfacePointSolver::domain], [SurfacePointSolver::solver_op], [SurfacePointSolver::tight_tol], [SurfacePointSolver::loose_tol] |
SmSurfPtSolveStepper::SetUV | SmSurfacePointSolve.cpp:259 | 3 | [SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step] |
SmSurfPtSolveStepper::UV | SmSurfacePointSolve.cpp:263 | 1 | [SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step] |
SmSurfPtSolveStepper::MaxStep | SmSurfacePointSolve.cpp:264 | 1 | [SurfPtSolveStepper::set_uv], [SurfPtSolveStepper::uv], [SurfPtSolveStepper::max_step] |
SmSurfPtSolveStepper::Pos | SmSurfacePointSolve.cpp:266 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Su | SmSurfacePointSolve.cpp:267 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Sv | SmSurfacePointSolve.cpp:268 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Suu | SmSurfacePointSolve.cpp:269 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Suv | SmSurfacePointSolve.cpp:270 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Svv | SmSurfacePointSolve.cpp:271 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Normal | SmSurfacePointSolve.cpp:273 | 1 | [SurfPtSolveStepper::pos], [SurfPtSolveStepper::su], [SurfPtSolveStepper::sv], [SurfPtSolveStepper::suu], [SurfPtSolveStepper::suv], [SurfPtSolveStepper::svv], [SurfPtSolveStepper::normal] |
SmSurfPtSolveStepper::Gap | SmSurfacePointSolve.cpp:275 | 1 | [SurfPtSolveStepper::gap], [SurfPtSolveStepper::gap_u], [SurfPtSolveStepper::gap_v], [SurfPtSolveStepper::gap_length] |
SmSurfPtSolveStepper::GapLength | SmSurfacePointSolve.cpp:278 | 1 | [SurfPtSolveStepper::gap], [SurfPtSolveStepper::gap_u], [SurfPtSolveStepper::gap_v], [SurfPtSolveStepper::gap_length] |
SmSurfPtSolveStepper::NRStepSuspect | SmSurfacePointSolve.cpp:281 | 1 | [SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect] |
SmSurfPtSolveStepper::SetIterCount | SmSurfacePointSolve.cpp:283 | 1 | [SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect] |
SmSurfPtSolveStepper::SetNRSuspect | SmSurfacePointSolve.cpp:284 | 1 | [SurfPtSolveStepper::iter_count], [SurfPtSolveStepper::set_iter_count], [SurfPtSolveStepper::nr_step_suspect], [SurfPtSolveStepper::set_nr_suspect] |
SmSurfPtSolveStepper::BoundHitsU | SmSurfacePointSolve.cpp:286 | 1 | [SurfPtSolveStepper::bound_hits_u], [SurfPtSolveStepper::bound_hits_v] |
SmSurfPtSolveStepper::BoundHitsV | SmSurfacePointSolve.cpp:287 | 1 | [SurfPtSolveStepper::bound_hits_u], [SurfPtSolveStepper::bound_hits_v] |
SmSurfPtSolveStepper::SmSurfPtSolveStepper | SmSurfacePointSolve.cpp:290 | 46 | [SurfPtSolveStepper], [SurfPtSolveStepper::new] |
SmSurfPtSolveStepper::~SmSurfPtSolveStepper | SmSurfacePointSolve.cpp:342 | 1 | |
SmSurfPtSolveStepper::Clamp | SmSurfacePointSolve.cpp:365 | 1 | [SurfPtSolveStepper::clamp] |
SmSurfacePointSolver::SmSurfacePointSolver | SmSurfacePointSolve.cpp:406 | 65 | [SurfacePointSolver], [SurfacePointSolver::new] |
SmSurfacePointSolver::SmSurfacePointSolver | SmSurfacePointSolve.cpp:477 | 13 | [SurfacePointSolver], [SurfacePointSolver::new] |
SmSurfacePointSolver::operator= | SmSurfacePointSolve.cpp:496 | 15 | Clone, Clone::clone_from, Drop (implicit) |
SmSurfPtGlobalSolver::SmSurfPtGlobalSolver | SmSurfacePointSolve.cpp:517 | 21 | [SurfPtGlobalSolver], [SurfPtGlobalSolver::new] |
SmSurfPtGlobalSolver::ClosedSurface | SmSurfacePointSolve.cpp:544 | 22 | [SurfPtGlobalSolver::closed_surface] |
SmSurfPtGlobalSolver::CalcFuncVal | SmSurfacePointSolve.cpp:574 | 44 | [SurfPtGlobalSolver::calc_func_val] |
GetTrianglesDist | SmSurfacePointSolve.cpp:1028 | 57 | [triangles_dist] |
WellBehavedControlNet | SmSurfacePointSolve.cpp:1095 | 177 | [well_behaved_control_net] |
SmSurfPtGlobalSolver::FindPolygonTriangleGuess | SmSurfacePointSolve.cpp:1294 | 168 | [SurfPtGlobalSolver::find_polygon_triangle_guess], [PolygonTriangleGuess] |
SmSurfPtGlobalSolver::RefineGuessPolygonLeg | SmSurfacePointSolve.cpp:1476 | 224 | [SurfPtGlobalSolver::refine_guess_polygon_leg] |
SmSurfPtGlobalSolver::CheckBadGuessStride | SmSurfacePointSolve.cpp:1903 | 87 | [SurfPtGlobalSolver::check_bad_guess_stride] |
SmSurfPtGlobalSolver::CheckGuessForSeams | SmSurfacePointSolve.cpp:2216 | 59 | [SurfPtGlobalSolver::check_guess_for_seams] |
SmSurfPtGlobalSolver::CheckGuessForSeams | SmSurfacePointSolve.cpp:2284 | 112 | [SurfPtGlobalSolver::check_guess_for_seams] |
SmSurfPtGlobalSolver::GetCreaseSubdomains | SmSurfacePointSolve.cpp:2403 | 97 | [SurfPtGlobalSolver::crease_subdomains] |
SmSurfPtGlobalSolver::IsLocalMin | SmSurfacePointSolve.cpp:2668 | 85 | [SurfPtGlobalSolver::is_local_min], [SurfPtGlobalSolver::is_local_max] |
SmSurfPtGlobalSolver::IsLocalMax | SmSurfacePointSolve.cpp:2761 | 66 | [SurfPtGlobalSolver::is_local_min], [SurfPtGlobalSolver::is_local_max] |
SmSurfPtGlobalSolver::PushingBoundary | SmSurfacePointSolve.cpp:2855 | 63 | [SurfPtGlobalSolver::pushing_boundary] |
SmSurfPtSolveStepper::operator= | SmSurfacePointSolve.cpp:3198 | 28 | Clone, Clone::clone_from, Drop (implicit) |
SmSurfPtSolveStepper::Eval | SmSurfacePointSolve.cpp:3232 | 51 | [SurfPtSolveStepper::eval], [StepperValues] |
SmSurfPtSolveStepper::HitBound | SmSurfacePointSolve.cpp:3418 | 46 | [SurfPtSolveStepper::hit_bound] |
SmSurfPtSolveStepper::CheckBounds | SmSurfacePointSolve.cpp:3894 | 93 | [SurfPtSolveStepper::check_bounds], [BoundsCheck] |
SmSurfPtSolveStepper::DropToIsoCurve | SmSurfacePointSolve.cpp:4680 | 104 | [SurfPtSolveStepper::drop_to_iso_curve] |
Module file-header table (30 rows)
| Rust | Upstream |
|---|---|
[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