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 unit | Deferred cases |
|---|---|
curve.curve_p2 green | 13 |
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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCurve::FixChainCurvesList | SmCurve.cpp:854 | 242 | [fix_chain_curves_list], [ChainedCurves] |
sm_FilterSolution | SmCurve.cpp:4620 | 255 | [filter_solution] |
SmCurve::AnalyticCurveIntersect | SmCurve.cpp:6073 | 93 | [analytic_curve_intersect], [AnalyticOperand], [Curve::analytic_curve_intersect] |
sm_GetProjDist | SmCurve.cpp:8395 | 40 | [proj_dist] |
SmCurve::ApproximatePolarBox | SmCurve.cpp:10377 | 70 | [approximate_polar_box], [Curve::approximate_polar_box] |
SmCurve::IsClosed | SmCurve.cpp:13617 | 30 | [is_closed_base], [Curve::is_closed] |
SmCurve::HasPlaneCrossings | SmCurve.cpp:14258 | 48 | [has_plane_crossings] |
SmCurve::IsDegenerate | SmCurve.cpp:14375 | 69 | [is_degenerate_base], [Curve::is_degenerate] |
SmCurvePropertyEFO::SmCurvePropertyEFO | SmCurve.cpp:14830 | 12 | [CurvePropertyEfo] |
SmCurvePropertyEFO::Evaluate | SmCurve.cpp:14907 | 935 | [CurvePropertyEfo] |
SmCCTangentIntENFO::SmCCTangentIntENFO | SmCurve.cpp:16153 | 12 | [CcTangentIntEnfo], [CcTangentIntEnfo::static_evaluate] |
SmCCTangentIntENFO::StaticEvaluate | SmCurve.cpp:16200 | 274 | [CcTangentIntEnfo], [CcTangentIntEnfo::static_evaluate] |
SmCCIntersectENFO::SmCCIntersectENFO | SmCurve.cpp:16545 | 15 | [CcIntersectEnfo] |
SmFindCCNormalENFO::SmFindCCNormalENFO | SmCurve.cpp:17142 | 14 | [FindCcNormalEnfo] |
SmFindPCExtremaEFO::SmFindPCExtremaEFO | SmCurve.cpp:18214 | 13 | [FindPcExtremaEfo] |
SmCPDistAtENFO::SmCPDistAtENFO | SmCurve.cpp:18435 | 10 | [CpDistAtEnfo] |
SmCPDistAtENFO::Evaluate | SmCurve.cpp:18485 | 122 | [CurvePropertyEfo] |
SmCurve::SnapToKnots | SmCurve.cpp:20815 | 37 | [Curve::snap_to_knots] |
SmCurve::AssertValid | SmCurve.cpp:23865 | 59 | [assert_valid_base], [Curve::assert_valid] |
SmFindCurveDistanceExtremaEFO::Evaluate | SmCurve.cpp:24024 | 27 | EvalFunction for [FindCurveDistanceExtrema] |
Module file-header table (17 rows)
| Rust | Upstream |
|---|---|
[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