solidcore

Units / intersect

intersect.surface_tracer partial

Layer
27
Upstream lines
1,900
Functions
23
Rust module
intersect::surface_tracer

Source: crates/solidcore/src/intersect/surface_tracer.rs

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

Notes

PARTIAL: difftest 427 cases (27 fixture: closed loops, open arcs, sub-domain, tangent plane, boundary iso solution, saddle singularity, tiny/huge scales, every FlushCurve branch, start point dedup and TestPoint removal + 400 generated over B-spline (incl. rational) and SmPlane surfaces), 398 pass bit-identical (max_rel_err 0), 29 deferred (surface.surface_p1 29: smsurf_GetSurfaceCache before DoTrace; the 23 surface.surface_p7 cases, SmSurface::EvaluateNormal in FlushCurve with a followed curve on B-spline surfaces, compare since PR #24 wired it, 22 pass and 1 moved to the cache); 5000-seed run clean, --perturb SENSITIVE; the shim's SectionTracer subclass (plane-section hooks, mirrored in the runner) drives the base class; DoTrace/FindBoundaryStartPoints/FindInteriorCurves take the surface cache as an argument until smsurf_GetSurfaceCache can hand one out; no UNPORTED(intersect.surface_tracer) stubs existed; 23 fns; largest: SmSurfaceTracer::TraceCurve, SmSurfaceTracer::FlushCurve, SmSurfaceTracer::FindInteriorCurves, SmSurfaceTracer::FindBoundaryStartPoints; cycle back-edges (call into later units; stub or co-port): intersect.surface_drop_curve(1), intersect.surface_drop_lib_p3(1), intersect.surface_silhouette(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit [surface.surface_p6 wired (PR #92): 427 cases, 416 pass, 11 deferred (intersect.surface_drop_lib_p3 6, surface.surface_cache_p1 5)]

Difftest

Cases
427
Passed
416
Deferred
11
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
intersect.surface_drop_lib_p3 claimed6
surface.surface_cache_p1 green5

Report JSON (per-case results)

Dependencies

Depends on: curve.hermite_curve green geom.extent1d green geom.extent2d green geom.extent3d green geom.global_solver partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green surface.surface_cache_p1 green

Soft dependencies: curve.curve_cache green curve.curve_p2 green curve.curve_p3 green curve.curve_p4 partial curve.curve_p6 green geom.a_object partial geom.geom_utility_p1 green geom.object partial geom.tree partial nurbs.b_spline_curve_p2 green surface.surface_cache_p3 partial surface.surface_p2 partial surface.surface_p7 partial

Dependents: intersect.surface_drop_curve partial intersect.surface_silhouette green

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmTracePnt::SmTracePntSmSurfaceTracer.h:738[TracePoint], [TracePoint::new], [TracePoint::reset]
SmTracePnt::~SmTracePntSmSurfaceTracer.h:8211[TracePoint], [TracePoint::new], [TracePoint::reset]
SmSurfaceTracer::~SmSurfaceTracerSmSurfaceTracer.h:1301Drop (implicit)
SmSurfaceTracer::SmSurfaceTracerSmSurfaceTracer.cpp:11438[SurfaceTracer], [SurfaceTracer::new]
SmSurfaceTracer::ComputeStepSizeSmSurfaceTracer.cpp:16618[SurfaceTrace::compute_step_size], [SurfaceTracer::compute_step_size]
SmSurfaceTracer::IsPointOnCurveSmSurfaceTracer.cpp:19266[SurfaceTrace::is_point_on_curve], [is_point_on_curve_base]
SmSurfaceTracer::ComputeNextPointSmSurfaceTracer.cpp:267132[SurfaceTrace::compute_next_point], [compute_next_point_base], [NextPoint]
SmSurfaceTracer::AddPointToCurveSmSurfaceTracer.cpp:4057[SurfaceTracer::add_point_to_curve]
SmSurfaceTracer::AddStartPointSmSurfaceTracer.cpp:42255[SurfaceTracer::add_start_point]
SmSurfaceTracer::TestPointSmSurfaceTracer.cpp:488157[SurfaceTrace::test_point], [test_point_base]
SmSurfaceTracer::TraceCurveSmSurfaceTracer.cpp:652370[SurfaceTrace::trace_curve], [trace_curve_base]
sm_FlushCrvSmSurfaceTracer.cpp:103252flush_crv (private)
SmSurfaceTracer::FlushCurveSmSurfaceTracer.cpp:1094299[flush_curve]
SmSurfaceTracer::DoTraceSmSurfaceTracer.cpp:1403121[SurfaceTrace::do_trace], [do_trace_base], [TraceOutput]
SmSurfaceTracer::ReverseCurveDirectionSmSurfaceTracer.cpp:153333[SurfaceTrace::reverse_curve_direction], [SurfaceTracer::reverse_curve_direction]
SmSurfaceTracer::ComputeSpanDeviationSmSurfaceTracer.cpp:157482[SurfaceTrace::compute_span_deviation], [compute_span_deviation_base]
SmSurfaceTracer::FindBoundaryStartPointsSmSurfaceTracer.cpp:1665180[SurfaceTrace::find_boundary_start_points], [find_boundary_start_points_base]
SmSurfaceTracer::TestIsoCurveSmSurfaceTracer.cpp:185544[SurfaceTrace::test_iso_curve], [test_iso_curve_base]
SmSurfaceTracer::FindInteriorCurvesSmSurfaceTracer.cpp:1906181[SurfaceTrace::find_interior_curves], [find_interior_curves_base]
SmSurfaceTracer::ComputePointValuesSmSurfaceTracer.cpp:209914[SurfaceTrace::compute_point_values]
SmSurfaceTracer::LocalPointSolveSmSurfaceTracer.cpp:212111[SurfaceTrace::local_point_solve]
SmSurfaceTracer::FindSolutionsOnBoundaryCurveSmSurfaceTracer.cpp:214412[SurfaceTrace::find_solutions_on_boundary_curve]
SmSurfaceTracer::DoesPointLieOnCurveSmSurfaceTracer.cpp:21658[SurfaceTrace::does_point_lie_on_curve]
Module file-header table (28 rows)
RustUpstream
[TracePointType]SmTracePointType
[TracePoint], [TracePoint::new], [TracePoint::reset]SmTracePnt, SmTracePnt(), ~SmTracePnt
[TracePointId]SmTracePnt* (a block of m_vTrcPntMgr)
[SurfaceTracer], [SurfaceTracer::new]SmSurfaceTracer, SmSurfaceTracer(cpSurface, crUVDomain)
Drop (implicit)~SmSurfaceTracer
[SurfaceTracer::approx_tol_3d], [SurfaceTracer::ang_tol_rad]GetThisApproxTol3d, GetThisAngTolRad
[SurfaceTrace]the virtual interface of SmSurfaceTracer
[SurfaceTrace::do_trace], [do_trace_base], [TraceOutput]SmSurfaceTracer::DoTrace
[SurfaceTrace::is_point_on_curve], [is_point_on_curve_base]SmSurfaceTracer::IsPointOnCurve
[SurfaceTrace::find_boundary_start_points], [find_boundary_start_points_base]SmSurfaceTracer::FindBoundaryStartPoints
[SurfaceTrace::compute_span_deviation], [compute_span_deviation_base]SmSurfaceTracer::ComputeSpanDeviation
[SurfaceTrace::local_point_solve]SmSurfaceTracer::LocalPointSolve
[SurfaceTrace::trace_curve], [trace_curve_base]SmSurfaceTracer::TraceCurve
[flush_curve]SmSurfaceTracer::FlushCurve
flush_crv (private)sm_FlushCrv (static)
[SurfaceTrace::find_interior_curves], [find_interior_curves_base]SmSurfaceTracer::FindInteriorCurves
[SurfaceTrace::compute_step_size], [SurfaceTracer::compute_step_size]SmSurfaceTracer::ComputeStepSize
[SurfaceTrace::compute_point_values]SmSurfaceTracer::ComputePointValues
[SurfaceTrace::compute_next_point], [compute_next_point_base], [NextPoint]SmSurfaceTracer::ComputeNextPoint
[SurfaceTrace::test_iso_curve], [test_iso_curve_base]SmSurfaceTracer::TestIsoCurve
[SurfaceTrace::reverse_curve_direction], [SurfaceTracer::reverse_curve_direction]SmSurfaceTracer::ReverseCurveDirection
[SurfaceTrace::find_solutions_on_boundary_curve]SmSurfaceTracer::FindSolutionsOnBoundaryCurve
[SurfaceTrace::does_point_lie_on_curve]SmSurfaceTracer::DoesPointLieOnCurve
[SurfaceTracer::add_point_to_curve]SmSurfaceTracer::AddPointToCurve
[SurfaceTracer::add_start_point]SmSurfaceTracer::AddStartPoint
[SurfaceTrace::test_point], [test_point_base]SmSurfaceTracer::TestPoint
[SurfaceTrace::branch_may_contain_answers], [SurfaceTrace::local_solve]the SmGlobalSolver hooks a tracer overrides
[TYPE], [TYPE_STRING], [is_kind_of]GetType, GetTypeString, IsKindOf (SM_COMMON)

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