solidcore

Units / curve

curve.curve_p4 partial

Layer
16
Upstream lines
2,377
Functions
20
Rust module
curve::curve::p4

Source: crates/solidcore/src/curve/curve/p4.rs

Upstream: source/SMLib/src/SmCurve.cpp

Notes

PARTIAL: difftest 3259 cases (259 fixture: TestSmCreateRectangle / far 1e-9 rectangle and TestSmCreateRegularPolygon / far 1.5e-6 pentagon edges through FixChainCurvesList, IsClosed, IsDegenerate, polar box, snap; my_test_reversed_line_join line pairs (chain, AnalyticCurveIntersect, AssertValid); my_test_drop_point unit circle through every SmCurvePropertyEFO property, SmCPDistAtENFO, sm_GetProjDist; tangent/extrema equations; filter cases + 3000 generated), 3210 pass bit-identical (max_rel_err 0), 49 deferred (surface.surface_p8 49: SmSurface::GlobalCurveIntersect in HasPlaneCrossings; curve.ellipse_p1 wiring cleared the 25 ellipse intersections); 30,259-case run clean; --perturb SENSITIVE; FixChainCurvesList duplicate deletion is a use after free upstream (not difftested, findings.md); SmFindCurveDistanceExtremaEFO::Evaluate co-ported earlier by curve.curve_cache; wired UNPORTED(curve.curve_p4) in nurbs.b_spline_curve_p2 (IsDegenerate, IsClosed: 94 -> 10 deferred) and nurbs.b_spline_curve_p3 (SmCurve::AssertValid: 200 -> 172 deferred); 20 fns; largest: SmCurvePropertyEFO::Evaluate, SmCCTangentIntENFO::StaticEvaluate, sm_FilterSolution, SmCurve::FixChainCurvesList; cycle back-edges (call into later units; stub or co-port): surface.surface_p8(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit

Difftest

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

Blocked by

Unported unitDeferred cases
curve.curve_p2 green13

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green geom.a_object partial geom.assert_array green geom.extent1d green geom.matrix green geom.object partial geom.solution_array partial geom.tol green geom.vector3d green

Soft dependencies: curve.ellipse_p2 green curve.line green geom.geom_utility_p1 green geom.polar_box green nurbs.b_spline_surface_p1 green

Dependents: curve.composite_curve_p2 green curve.curve_p1 partial curve.curve_p3 green curve.curve_p5 partial curve.curve_p6 green curve.curve_p7 green curve.curve_p8 green curve.curve_p9 green curve.ellipse_p1 green

Soft dependents: blend.fillet_custom_solver partial blend.fillet_geom_p1 claimed blend.fillet_geom_p3 todo blend.fillet_geom_p4 todo blend.fillet_geom_p5 todo blend.fillet_solver_p2 todo blend.fillet_solver_p4 claimed blend.fillet_standard_solver_p1 claimed blend.fillet_standard_solver_p2 todo boolean.topology_intersector_p2 claimed boolean.topology_intersector_p3 claimed heal.heal_data_p2 partial intersect.curve_class_p5 partial intersect.curve_class_p7 partial intersect.curve_class_p8 partial intersect.surface_drop_curve partial intersect.surface_drop_lib_p3 claimed intersect.surface_intersector_p1 partial intersect.surface_intersector_p3 partial intersect.surface_intersector_p5 partial intersect.surface_tracer partial offset.offset_geometry_creation claimed primitive.primitive_creation_p2 todo query.face_p2 partial surface.b_spline_volume_n_lib partial surface.cone_p3 partial surface.plane_p1 partial surface.sphere green surface.surf_of_extrusion_p1 green surface.surf_of_extrusion_p2 partial surface.surf_of_revolution_p1 green surface.surf_of_revolution_p2 partial surface.surf_of_revolution_p3 partial surface.surface_p10 partial surface.surface_p11 partial surface.surface_p5 green surface.surface_p6 green surface.surface_p8 partial surface.surface_p9 partial surface.unbend_volume green sweep.rotational_sweep_geometry partial topology.brep_p7 claimed topology.brep_p8 claimed topology.face_p2 partial topology.face_p3 claimed topology.proto_topology_p3 partial topology.trimming_tools partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmCurve::FixChainCurvesListSmCurve.cpp:854242[fix_chain_curves_list], [ChainedCurves]
sm_FilterSolutionSmCurve.cpp:4620255[filter_solution]
SmCurve::AnalyticCurveIntersectSmCurve.cpp:607393[analytic_curve_intersect], [AnalyticOperand], [Curve::analytic_curve_intersect]
sm_GetProjDistSmCurve.cpp:839540[proj_dist]
SmCurve::ApproximatePolarBoxSmCurve.cpp:1037770[approximate_polar_box], [Curve::approximate_polar_box]
SmCurve::IsClosedSmCurve.cpp:1361730[is_closed_base], [Curve::is_closed]
SmCurve::HasPlaneCrossingsSmCurve.cpp:1425848[has_plane_crossings]
SmCurve::IsDegenerateSmCurve.cpp:1437569[is_degenerate_base], [Curve::is_degenerate]
SmCurvePropertyEFO::SmCurvePropertyEFOSmCurve.cpp:1483012[CurvePropertyEfo]
SmCurvePropertyEFO::EvaluateSmCurve.cpp:14907935[CurvePropertyEfo]
SmCCTangentIntENFO::SmCCTangentIntENFOSmCurve.cpp:1615312[CcTangentIntEnfo], [CcTangentIntEnfo::static_evaluate]
SmCCTangentIntENFO::StaticEvaluateSmCurve.cpp:16200274[CcTangentIntEnfo], [CcTangentIntEnfo::static_evaluate]
SmCCIntersectENFO::SmCCIntersectENFOSmCurve.cpp:1654515[CcIntersectEnfo]
SmFindCCNormalENFO::SmFindCCNormalENFOSmCurve.cpp:1714214[FindCcNormalEnfo]
SmFindPCExtremaEFO::SmFindPCExtremaEFOSmCurve.cpp:1821413[FindPcExtremaEfo]
SmCPDistAtENFO::SmCPDistAtENFOSmCurve.cpp:1843510[CpDistAtEnfo]
SmCPDistAtENFO::EvaluateSmCurve.cpp:18485122[CurvePropertyEfo]
SmCurve::SnapToKnotsSmCurve.cpp:2081537[Curve::snap_to_knots]
SmCurve::AssertValidSmCurve.cpp:2386559[assert_valid_base], [Curve::assert_valid]
SmFindCurveDistanceExtremaEFO::EvaluateSmCurve.cpp:2402427EvalFunction for [FindCurveDistanceExtrema]
Module file-header table (17 rows)
RustUpstream
[fix_chain_curves_list], [ChainedCurves]SmCurve::FixChainCurvesList (static)
[filter_solution]sm_FilterSolution (static)
[analytic_curve_intersect], [AnalyticOperand], [Curve::analytic_curve_intersect]SmCurve::AnalyticCurveIntersect
[proj_dist]sm_GetProjDist (static)
[approximate_polar_box], [Curve::approximate_polar_box]SmCurve::ApproximatePolarBox
[is_closed_base], [Curve::is_closed]SmCurve::IsClosed
[has_plane_crossings]SmCurve::HasPlaneCrossings
[is_degenerate_base], [Curve::is_degenerate]SmCurve::IsDegenerate
[Curve::snap_to_knots]SmCurve::SnapToKnots
[assert_valid_base], [Curve::assert_valid]SmCurve::AssertValid
[CurvePropertyEfo]SmCurvePropertyEFO (constructor, Evaluate)
[CcTangentIntEnfo], [CcTangentIntEnfo::static_evaluate]SmCCTangentIntENFO (constructor, StaticEvaluate)
[CcIntersectEnfo]SmCCIntersectENFO (constructor, HasIntervals, SetIntervals)
[FindCcNormalEnfo]SmFindCCNormalENFO (constructor)
[FindPcExtremaEfo]SmFindPCExtremaEFO (constructor)
[CpDistAtEnfo]SmCPDistAtENFO (constructor, Evaluate)
EvalFunction for [FindCurveDistanceExtrema]SmFindCurveDistanceExtremaEFO::Evaluate (co-ported in [crate::curve::curve_cache])

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