solidcore

Units / intersect

intersect.surface_intersector_p1 partial

Layer
32
Upstream lines
1,816
Functions
40
Rust module
intersect::surface_intersector::p1

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

Upstream: source/SMLib/inc/SmSurfaceIntersector.h, source/SMLib/src/SmSurfaceIntersector.cpp

Notes

PARTIAL: difftest 1510 cases (10 inline edge cases + 1500 generated programs over planes, open/rational/closed-tube B-spline surfaces, self-intersection, sub/cut/disjoint/degenerate/fillet domains, scales 1e-6..1e5), 1416 pass bit-identical (max_rel_err 0), 94 deferred (surface.surface_p3 48, surface.surface_p11 36, surface.surface_p5 6, surface.surface_p1 4) after surface.surface_p7 wired EvaluateNormal, PR #24 (before: 1406 pass, 104 deferred); --perturb SENSITIVE 1416/1416. IsClosed, EvaluateNormal and Evaluate1stDerivatives go through surface::surface::p7 (PR #24; its co-port of IsClosed was replaced). EvaluateLawPoint has no cases (needs SmFilletLaw, SmOffsetSurface). Wired SmTsectPnt into Surface::point_based_surface_intersect (surface.surface_p2). 40 fns; largest: SmSurfaceIntersector::TestSpanAccuracy, sm_IsPointOnCurve, SmSurfaceIntersector::AddStartPoint, SmSurfaceIntersector::RefinePoint; cycle back-edges (call into later units; stub or co-port): blend.fillet_executive_p1(1), blend.fillet_intersector(1), intersect.adv_surface_intersector(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run with surface.surface_p5's back-edges wired (PR #50): cases=1510 passed=1420 failed=0 deferred=90 max_rel_err=0e0 blocked_by=surface.surface_p11(36),surface.surface_p3(48),surface.surface_point_solve_p3(6). Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 1510 cases, 1465 pass, 45 deferred (surface.surface_p11 39, surface.surface_point_solve_p3 6). surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=1510 passed=1495 failed=0 deferred=15 (surface.surface_p8 15); --perturb SENSITIVE.

Difftest

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

Blocked by

Unported unitDeferred cases
curve.iso_curve green10

Report JSON (per-case results)

Dependencies

Depends on: curve.hermite_curve green geom.extent1d green geom.extent2d green geom.extent3d green geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green surface.surface_p2 partial

Soft dependencies: curve.curve_p2 green curve.curve_p3 green curve.curve_p4 partial curve.curve_p6 green geom.object partial nurbs.b_spline_curve_p1 green surface.offset_surface green surface.surface_p1 partial surface.surface_p11 partial surface.surface_p3 green surface.surface_p4 green surface.surface_p5 green surface.surface_p7 partial

Dependents: blend.fillet_corner_p2 todo blend.fillet_custom_solver partial blend.fillet_geom_p1 claimed blend.fillet_geom_p3 todo blend.fillet_intersector claimed blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo blend.fillet_solver_p3 todo blend.fillet_solver_p4 claimed blend.fillet_standard_solver_p2 todo intersect.adv_surface_intersector partial intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial intersect.surface_intersector_p4 partial intersect.surface_intersector_p5 partial

Soft dependents: blend.fillet_corner_p1 todo blend.fillet_corner_p3 todo blend.fillet_geom_p2 todo blend.fillet_geom_p4 todo intersect.curve_class_p2 claimed

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmTsectPnt::~SmTsectPntSmSurfaceIntersector.h:18610Drop (implicit)
SmTsectPnt::PointTypeSmSurfaceIntersector.h:2131[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::UParamTypeSmSurfaceIntersector.h:2141[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::VParamTypeSmSurfaceIntersector.h:2151[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::UVPosSmSurfaceIntersector.h:2161[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::UVDerivSmSurfaceIntersector.h:2171[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfPosSmSurfaceIntersector.h:2181[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfDuSmSurfaceIntersector.h:2191[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfDvSmSurfaceIntersector.h:2201[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfDuuSmSurfaceIntersector.h:2211[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfDuvSmSurfaceIntersector.h:2221[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfDvvSmSurfaceIntersector.h:2231[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfNormSmSurfaceIntersector.h:2241[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::CrvPosSmSurfaceIntersector.h:2251[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::CrvDerivSmSurfaceIntersector.h:2261[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmTsectPnt::SrfEvalMatrixSmSurfaceIntersector.h:2271[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)
SmSurfaceIntersector::~SmSurfaceIntersectorSmSurfaceIntersector.h:2991Drop (implicit)
SmSurfaceIntersector::ComputePointValuesDeltaSmSurfaceIntersector.h:3298[SurfaceIntersector::compute_point_values_delta]
SmSurfaceIntersector::SetExtensionDistanceSmSurfaceIntersector.h:5901[SurfaceIntersector::set_extension_distance]
SmSurfaceIntersector::SetUseSurfaceEdgesSmSurfaceIntersector.h:6542[SurfaceIntersector::set_use_surface_edges]
SmTsectPnt::SmTsectPntSmSurfaceIntersector.cpp:4435[TsectPnt], [TsectPnt::new], Clone
SmTsectPnt::operator=SmSurfaceIntersector.cpp:14560[TsectPnt::assign]
SmTsectPnt::IsBoundedSmSurfaceIntersector.cpp:21211[TsectPnt::is_bounded]
SmTsectPnt::ClassifyPointParamsSmSurfaceIntersector.cpp:23493[TsectPnt::classify_point_params]
SmSurfaceIntersector::SmSurfaceIntersectorSmSurfaceIntersector.cpp:543124[SurfaceIntersector], [SurfaceIntersector::new]
sm_ComputeCurveTypeSmSurfaceIntersector.cpp:67375[compute_curve_type]
SmSurfaceIntersector::StepBackFromSingularitySmSurfaceIntersector.cpp:232270[SurfaceIntersector::step_back_from_singularity]
SmSurfaceIntersector::ComputeSingularityPointSmSurfaceIntersector.cpp:290915[SurfaceIntersector::compute_singularity_point]
SmSurfaceIntersector::ComputeStepSizeSmSurfaceIntersector.cpp:293755[SurfaceIntersector::compute_step_size]
SmSurfaceIntersector::RefinePointSmSurfaceIntersector.cpp:3260133[SurfaceIntersector::refine_point]
SmSurfaceIntersector::TestSpanAccuracySmSurfaceIntersector.cpp:3433242[SurfaceIntersector::test_span_accuracy], [SpanAccuracy]
SmSurfaceIntersector::AddPointToCurveSmSurfaceIntersector.cpp:368319[SurfaceIntersector::add_point_to_curve]
SmSurfaceIntersector::AddStartPointSmSurfaceIntersector.cpp:3763197[SurfaceIntersector::add_start_point]
SmSurfaceIntersector::AddThroughPointSmSurfaceIntersector.cpp:396840[SurfaceIntersector::add_through_point]
sm_IsPointOnCurveSmSurfaceIntersector.cpp:4016239[is_point_on_tsect_curve]
sm_FlushCrvSmSurfaceIntersector.cpp:557664[flush_crv]
SmSurfaceIntersector::ReverseCurveDirectionSmSurfaceIntersector.cpp:727172[SurfaceIntersector::reverse_curve_direction]
SmSurfaceIntersector::IsPointOnCurveSmSurfaceIntersector.cpp:7350120[SurfaceIntersector::is_point_on_curve]
SmSurfaceIntersector::IsPointOnStartPointSmSurfaceIntersector.cpp:747752[SurfaceIntersector::is_point_on_start_point]
SmSurfaceIntersector::EvaluateLawPointSmSurfaceIntersector.cpp:753963[SurfaceIntersector::evaluate_law_point]
Module file-header table (28 rows)
RustUpstream
[IntersectionPointType]SmIntersectionPointType
[TsectPnt], [TsectPnt::new], CloneSmTsectPnt, its default and copy constructors
Drop (implicit)SmTsectPnt::~SmTsectPnt
[TsectPnt::assign]SmTsectPnt::operator=
[TsectPnt::is_bounded]SmTsectPnt::IsBounded
[TsectPnt::classify_point_params]SmTsectPnt::ClassifyPointParams
[TsectPnt::point_type], [TsectPnt::u_param_type], [TsectPnt::v_param_type], [TsectPnt::uv_pos], [TsectPnt::uv_deriv], [TsectPnt::srf_pos], [TsectPnt::srf_du], [TsectPnt::srf_dv], [TsectPnt::srf_duu], [TsectPnt::srf_duv], [TsectPnt::srf_dvv], [TsectPnt::srf_norm], [TsectPnt::crv_pos], [TsectPnt::crv_deriv], [TsectPnt::srf_eval_matrix] (and _mut setters)PointType, UParamType, VParamType, UVPos, UVDeriv, SrfPos, SrfDu, SrfDv, SrfDuu, SrfDuv, SrfDvv, SrfNorm, CrvPos, CrvDeriv, SrfEvalMatrix
[SurfaceIntersector], [SurfaceIntersector::new]SmSurfaceIntersector, its constructor
Drop (implicit)~SmSurfaceIntersector
[SurfaceIntersector::surface], [SurfaceIntersector::this_approx_tol_3d], [SurfaceIntersector::this_ang_tol_rad]GetSurface, GetThisApproxTol3d, GetThisAngTolRad
[SurfaceIntersector::set_extension_distance]SetExtensionDistance
[SurfaceIntersector::set_use_surface_edges]SetUseSurfaceEdges
[SurfaceIntersector::compute_point_values_delta]ComputePointValuesDelta (inline SM_ERR)
[SurfaceIntersector::step_back_from_singularity]StepBackFromSingularity
[SurfaceIntersector::compute_singularity_point]ComputeSingularityPoint
[SurfaceIntersector::compute_step_size]ComputeStepSize
[SurfaceIntersector::refine_point]RefinePoint
[SurfaceIntersector::test_span_accuracy], [SpanAccuracy]TestSpanAccuracy
[SurfaceIntersector::add_point_to_curve]AddPointToCurve
[SurfaceIntersector::add_start_point]AddStartPoint
[SurfaceIntersector::add_through_point]AddThroughPoint
[SurfaceIntersector::reverse_curve_direction]ReverseCurveDirection
[SurfaceIntersector::is_point_on_curve]IsPointOnCurve
[SurfaceIntersector::is_point_on_start_point]IsPointOnStartPoint
[SurfaceIntersector::evaluate_law_point]EvaluateLawPoint
[compute_curve_type]sm_ComputeCurveType (static)
[is_point_on_tsect_curve]sm_IsPointOnCurve (static)
[flush_crv]sm_FlushCrv (static)

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