solidcore

Units / curve

curve.curve_p2 green

Layer
13
Upstream lines
2,302
Functions
79
Rust module
curve::curve::p2

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

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

Notes

GREEN (promoted by curve.curve_p5: 3021 cases, 0 deferred after its stubs were wired); 79 fns; largest: SmCurvePropertyGS::BranchMayContainAnswers, SmCurve::SurfaceMaxDistanceBetween, SmCurve::EvaluateContinuity, sm_FlushCrv; cycle back-edges (call into later units; stub or co-port): curve.curve_cache(4), surface.surface_p2(3), curve.ellipse_p1(2), curve.composite_curve_p2(1), curve.conic(1), curve.crv_in_volume(1), curve.crv_on_surf(1), curve.hyperbola(1), curve.iso_curve(1), curve.line(1), curve.offset_curve(1), curve.parabola(1), curve.projected_curve(1), curve.tangent_field(1), surface.surface_p5(1), surface.surface_p7(1), topology.topology(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; PARTIAL: difftest 3018 cases (18 fixture re-expressing the prog_test/SM_API_test line and circle curves, ApproximateLength(ivl, 20), circle seam continuity, Hermite base defaults, ReadFromDB dispatch + 3000 generated over B-spline, Hermite and arc curves, the static helpers via verbatim shim copies and the solver box tests), 3012 pass bit-identical (max_rel_err 0), 6 deferred (curve.curve_p5 5: SmCurve::IsArc, curve.line 1: SmLine in CreateAnalyticCurve); --perturb SENSITIVE; introduces curve::curve::Curve (CurveKind enum + owner) and CurveEvaluate; wired UNPORTED(curve.curve_p2) in curve.hermite_curve (93 -> 0, green), nurbs.b_spline_curve_n_lib (57 -> 0, green), nurbs.b_spline_curve_p1 (60 -> 4), nurbs.b_spline_curve_p2 (317 -> 150), nurbs.b_spline_curve_p3 (391 -> 359); geom.tools / geom.solution_array / geom.tol stubs stay (opaque handles, see findings.md); after curve.line (SmLine::ReadFromDB wired): 3021 cases, 3016 pass, 5 deferred (curve.curve_p5 5) Review PR #106 recertification: 3021 cases, 3021 pass, 0 deferred, 0 failed, max_rel_err=0.0; deferred: none.

Difftest

Cases
3,021
Passed
3,021
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: curve.hermite_curve green geom.a_object partial geom.extent1d green geom.extent3d green geom.geom_utility_p1 green geom.global_solver partial geom.object partial geom.solution_array partial geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green

Soft dependencies: geom.axis2_placement green geom.extent2d green geom.geom_utility_p2 green geom.pseudo_box green geom.tol green geom.tree partial nurbs.b_spline_curve_p2 green

Dependents: blend.fillet_corner_p1 todo blend.fillet_corner_p2 todo blend.fillet_corner_p3 todo blend.fillet_executive_p1 todo blend.fillet_geom_p1 claimed blend.fillet_geom_p2 todo blend.fillet_geom_p3 todo blend.fillet_geom_p5 todo blend.fillet_geom_p6 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo blend.fillet_solver_p3 todo blend.fillet_solver_p4 claimed blend.fillet_solver_p5 claimed blend.fillet_standard_solver_p1 claimed blend.fillet_standard_solver_p2 todo blend.hcr claimed boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed boolean.topology_intersector_p3 claimed curve.composite_curve_p1 green curve.composite_curve_p2 green curve.conic green curve.crv_in_volume partial curve.crv_on_surf partial curve.curve_cache green curve.curve_p1 partial curve.curve_p3 green curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green curve.curve_p7 green curve.curve_p8 green curve.curve_p9 green curve.ellipse_p1 green curve.ellipse_p2 green curve.hyperbola green curve.iso_curve green curve.line green curve.offset_curve green curve.parabola green curve.projected_curve green curve.tangent_field green heal.gap partial heal.stitch_p1 claimed heal.stitch_p2 claimed intersect.curve_class_p1 partial intersect.curve_class_p2 claimed intersect.curve_class_p3 partial intersect.curve_class_p4 claimed intersect.curve_class_p5 partial intersect.curve_class_p6 partial intersect.curve_class_p7 partial intersect.curve_class_p8 partial intersect.point_class partial intersect.surface_drop_curve partial intersect.surface_drop_lib_p1 partial intersect.surface_drop_lib_p3 claimed intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial intersect.topology_solver_p1 partial intersect.topology_solver_p2 partial offset.offset_executive_p1 claimed offset.offset_geometry_creation claimed primitive.primitive_creation_p1 claimed primitive.primitive_creation_p2 todo primitive.primitive_creation_p3 todo query.api_queries partial query.edge partial query.face_p1 claimed query.face_p3 claimed query.loop green surface.b_spline_volume_n_lib partial surface.cone_p1 green surface.cone_p3 partial surface.plane_p1 partial surface.plane_p2 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_p3 partial surface.surface_p10 partial surface.surface_p11 partial surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p8 partial surface.surface_p9 partial sweep.rotational_sweep_geometry partial sweep.topology_sweep claimed sweep.trans_sweep_geometry partial topology.brep_p1 claimed topology.brep_p10 claimed topology.brep_p2 claimed topology.brep_p3 claimed topology.brep_p5 claimed topology.brep_p7 claimed topology.brep_p8 claimed topology.brep_p9 claimed topology.edge partial topology.edgeuse_p1 partial topology.edgeuse_p3 claimed topology.face_p1 partial topology.face_p2 partial topology.face_p3 claimed topology.face_p4 claimed topology.proto_topology_p1 partial topology.proto_topology_p2 partial topology.proto_topology_p3 partial topology.trimming_tools partial

Soft dependents: blend.fillet_custom_solver partial blend.fillet_executive_p2 todo blend.fillet_executive_p3 todo blend.fillet_geom_p4 todo blend.fillet_intersector claimed boolean.merge_p1 partial boolean.merge_p2 todo boolean.merge_p4 todo boolean.merge_p5 partial heal.heal_data_p2 partial intersect.curve_class_p9 partial intersect.ray_tracer partial intersect.surface_drop_lib_p2 green intersect.surface_intersector_p1 partial intersect.surface_intersector_p4 partial intersect.surface_intersector_p5 partial intersect.surface_tracer partial mass.integrator partial query.face_p2 partial surface.cone_p2 claimed surface.curve_bounded_surface green surface.surf_of_revolution_p2 partial surface.surface_cache_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p7 partial surface.torus green sweep.api_brep partial sweep.api_surfaces partial topology.brep_cache partial topology.brep_data partial topology.brep_p4 claimed topology.edgeuse_p2 partial topology.loopuse partial topology.vertexuse partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmCurve::CalculateContinuitiesSmCurve.h:1974[Curve::calculate_continuities]
SmCurve::ConvertTo2DSmCurve.h:2221[Curve::convert_to_2d]
SmCurve::CreateAnalyticCurveSmCurve.h:2404[Curve::create_analytic_curve]
SmCurve::DropPointFastSmCurve.h:35920[Curve::drop_point_fast]
SmCurve::EvaluateSmCurve.h:39016[Curve::evaluate], [Curve::evaluate_point]
SmCurve::EvaluatePointSmCurve.h:4073[Curve::evaluate], [Curve::evaluate_point]
SmCurve::GetDegreeSmCurve.h:4651[Curve::degree], [Curve::dim], [Curve::natural_interval]
SmCurve::GetDimSmCurve.h:4661[Curve::degree], [Curve::dim], [Curve::natural_interval]
SmCurve::GetNaturalIntervalSmCurve.h:4671[Curve::degree], [Curve::dim], [Curve::natural_interval]
SmCurve::GetNumberNaturalKnotsSmCurve.h:4701[Curve::number_natural_knots], [Curve::number_control_points]
SmCurve::GetNumberControlPointsSmCurve.h:4711[Curve::number_natural_knots], [Curve::number_control_points]
SmCurve::GetOwnerSmCurve.h:4721[Curve::owner], [Curve::set_owner], [OwnerChange]
SmCurve::IsAnalyticSmCurve.h:7041[Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational]
SmCurve::IsBoundedSmCurve.h:7061[Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational]
SmCurve::HasRepeatedEndControlPointsSmCurve.h:7431[Curve::has_repeated_end_control_points]
SmCurve::IsRationalSmCurve.h:7471[Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational]
SmCurve::ReverseParameterizationSmCurve.h:8653[Curve::reverse_parameterization], [Curve::edit_parameterization]
SmCurve::EditParameterizationSmCurve.h:8703[Curve::reverse_parameterization], [Curve::edit_parameterization]
SmCurve::STEPInversionSmCurve.h:8828[Curve::step_inversion]
SmCurve::TransformSmCurve.h:9095[Curve::transform], [Curve::trim]
SmCurve::TrimSmCurve.h:9374[Curve::transform], [Curve::trim]
SmCurve::GetClassStringSmCurve.h:10101[TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string]
SmCurve::GetClassTypeSmCurve.h:10101[TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string]
SmCurve::GetTypeSmCurve.h:10101[TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string]
SmCurve::GetTypeStringSmCurve.h:10101[TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string]
SmCurve::~SmCurveSmCurve.h:12638Drop (implicit), Clone
SmCurve::CopySmCurve.h:127716[Curve::copy]
SmFindCurveDistanceExtremaEFO::SmFindCurveDistanceExtremaEFOSmCurve.h:13438[FindCurveDistanceExtrema]
SmFindCurveDistanceExtremaEFO::~SmFindCurveDistanceExtremaEFOSmCurve.h:13621
sm_ConvertToParameterDeltaSmCurve.cpp:21611[convert_to_parameter_delta]
sm_PushPointSmCurve.cpp:35922[push_point], [pop_stack], [stack_look]
sm_PopStackSmCurve.cpp:38824[push_point], [pop_stack], [stack_look]
sm_StackLookSmCurve.cpp:41928[push_point], [pop_stack], [stack_look]
sm_FlushCrvSmCurve.cpp:455170[flush_crv]
sm_AddToCurveSmCurve.cpp:63356[add_to_curve]
SmCurve::operator==SmCurve.cpp:69615[Curve::approx_eq]
SmCurve::SetOwnerSmCurve.cpp:71818[Curve::owner], [Curve::set_owner], [OwnerChange]
SmCurve::IntersectWithLineSmCurve.cpp:130615[Curve::intersect_with_line], [LineIntersection]
SmCurve::ApproximateLengthSmCurve.cpp:218785[approximate_length], [Curve::approximate_length]
SmCurve::ConvertTFromNURBSToSTEPSmCurve.cpp:22819[Curve::convert_t_from_nurbs_to_step], [Curve::convert_t_from_step_to_nurbs]
SmCurve::ConvertTFromSTEPToNURBSSmCurve.cpp:22998[Curve::convert_t_from_nurbs_to_step], [Curve::convert_t_from_step_to_nurbs]
SmCurve::CreateBySplitCurveSmCurve.cpp:239131[Curve::create_by_split_curve]
SmCurve::SurfaceMaxDistanceBetweenSmCurve.cpp:2925244[Curve::surface_max_distance_between], [SurfaceGap]
sm_SnapSolToSpecifiedEndpointSmCurve.cpp:318372[snap_sol_to_specified_endpoint]
SmCurve::EvaluateSTEPSmCurve.cpp:352720[evaluate_step]
SmCurve::EuclidianStepOffSmCurve.cpp:357779[euclidian_step_off], [StepOff]
SmCurve::EvaluateGeometricSmCurve.cpp:367529[evaluate_geometric]
SmCurve::EvaluateContinuitySmCurve.cpp:3716198[evaluate_continuity], [CurveContinuity]
SmCurve::GetKnotsSmCurve.cpp:416214[Curve::knots], [Curve::ends], [base_ends]
SmCurve::GetEndsSmCurve.cpp:418218[Curve::knots], [Curve::ends], [base_ends]
SmCurve::GetEdgeSmCurve.cpp:420623[Curve::edge]
SmCCIGlobalSolver::SmCCIGlobalSolverSmCurve.cpp:452022[CciGlobalSolver]
sm_UnitizeTangentSmCurve.cpp:454951[unitize_tangent]
SmCCGlobalSolver::SmCCGlobalSolverSmCurve.cpp:822410[CcGlobalSolver]
SmCCGlobalSolver::BranchMayContainAnswersSmCurve.cpp:8241142[CcGlobalSolver]
sm_GetProjSignedAngleSmCurve.cpp:844427[proj_signed_angle]
SmCPGlobalSolver::SmCPGlobalSolverSmCurve.cpp:1086511[CpGlobalSolver]
SmCPGlobalSolver::BranchMayContainAnswersSmCurve.cpp:1088259[CcGlobalSolver]
SmCurvePropertyGS::SmCurvePropertyGSSmCurve.cpp:1199114[CurvePropertyGs], [CurvePropertyType]
SmCurvePropertyGS::FindBestSubdivisionNodeSmCurve.cpp:12011108[CurvePropertyGs], [CurvePropertyType]
SmCurvePropertyGS::BranchMayContainAnswersSmCurve.cpp:12141251[CcGlobalSolver]
SmCurve::IsKindOfSmCurve.cpp:145294[is_kind_of], [Curve::is_kind_of]
SmLengthIFEO::SmLengthIFEOSmCurve.cpp:145753[LengthIntegrand]
SmLengthIFEO::EvaluateSmCurve.cpp:1458913[Curve::evaluate], [Curve::evaluate_point]
SmCurvePropertyEFO::~SmCurvePropertyEFOSmCurve.cpp:148441
SmCCTangentIntENFO::~SmCCTangentIntENFOSmCurve.cpp:161281
SmCCIntersectENFO::~SmCCIntersectENFOSmCurve.cpp:165171
SmCCIntersectENFO::HasIntervalsSmCurve.cpp:165191
SmCCIntersectENFO::SetIntervalsSmCurve.cpp:1652011
SmFindCCNormalENFO::~SmFindCCNormalENFOSmCurve.cpp:171561
SmFindPCExtremaEFO::~SmFindPCExtremaEFOSmCurve.cpp:182281
SmCPDistAtENFO::~SmCPDistAtENFOSmCurve.cpp:184471
SmBestLineFitENFO::HasIntervalsSmCurve.cpp:186851
SmBestLineFitENFO::SetIntervalsSmCurve.cpp:186866
SmCurve::NotifySmCurve.cpp:1932950[notify]
sm_OutputSmCurve.cpp:2091112[output]
sm_TestStepSmCurve.cpp:2093294[test_step], [TessStepResult]
sm_FindTestParamsSmCurve.cpp:2103268[find_test_params]
SmCurve::ReadFromDBSmCurve.cpp:2370931[Curve::read_from_db]
Module file-header table (49 rows)
RustUpstream
[Curve], [CurveKind]SmCurve (and its derived classes)
Drop (implicit), Clone~SmCurve, copy constructor (owner reset)
[TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string]GetType, GetClassType, GetTypeString, GetClassString (SM_COMMON)
[is_kind_of], [Curve::is_kind_of]SmCurve::IsKindOf
[Curve::approx_eq]operator==
[Curve::owner], [Curve::set_owner], [OwnerChange]GetOwner, SetOwner
[Curve::edge]GetEdge
[notify]SmCurve::Notify
[CurveEvaluate]the evaluation virtuals the base numerics call
[Curve::calculate_continuities]CalculateContinuities
[Curve::convert_to_2d]ConvertTo2D
[Curve::create_analytic_curve]CreateAnalyticCurve
[Curve::copy]Copy
[Curve::drop_point_fast]DropPointFast
[Curve::evaluate], [Curve::evaluate_point]Evaluate, EvaluatePoint
[Curve::degree], [Curve::dim], [Curve::natural_interval]GetDegree, GetDim, GetNaturalInterval
[Curve::number_natural_knots], [Curve::number_control_points]GetNumberNaturalKnots, GetNumberControlPoints
[Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational]IsAnalytic, IsBounded, IsRational
[Curve::has_repeated_end_control_points]HasRepeatedEndControlPoints
[Curve::reverse_parameterization], [Curve::edit_parameterization]ReverseParameterization, EditParameterization
[Curve::step_inversion]STEPInversion
[Curve::transform], [Curve::trim]Transform, Trim
[Curve::knots], [Curve::ends], [base_ends]GetKnots, GetEnds
[Curve::intersect_with_line], [LineIntersection]IntersectWithLine
[approximate_length], [Curve::approximate_length]ApproximateLength
[Curve::convert_t_from_nurbs_to_step], [Curve::convert_t_from_step_to_nurbs]ConvertTFromNURBSToSTEP, ConvertTFromSTEPToNURBS
[Curve::create_by_split_curve]CreateBySplitCurve
[Curve::surface_max_distance_between], [SurfaceGap]SurfaceMaxDistanceBetween
[evaluate_step]EvaluateSTEP
[euclidian_step_off], [StepOff]EuclidianStepOff
[evaluate_geometric]EvaluateGeometric
[evaluate_continuity], [CurveContinuity]EvaluateContinuity
[Curve::read_from_db]SmCurve::ReadFromDB
[convert_to_parameter_delta]sm_ConvertToParameterDelta (static)
[push_point], [pop_stack], [stack_look]sm_PushPoint, sm_PopStack, sm_StackLook (static)
[flush_crv]sm_FlushCrv (static)
[add_to_curve]sm_AddToCurve (static)
[snap_sol_to_specified_endpoint]sm_SnapSolToSpecifiedEndpoint (static)
[unitize_tangent]sm_UnitizeTangent (static)
[proj_signed_angle]sm_GetProjSignedAngle (static)
[output]sm_Output (static)
[test_step], [TessStepResult]sm_TestStep, SmTessStepTestResultType
[find_test_params]sm_FindTestParams (static)
[CcGlobalSolver]SmCCGlobalSolver (constructor, BranchMayContainAnswers; LocalSolve is unit curve.curve_p9)
[CpGlobalSolver]SmCPGlobalSolver (constructor, BranchMayContainAnswers; LocalSolve is unit curve.curve_p1)
[CurvePropertyGs], [CurvePropertyType]SmCurvePropertyGS (constructor, FindBestSubdivisionNode, BranchMayContainAnswers), SmCurvePropertyType
[CciGlobalSolver]SmCCIGlobalSolver (constructor; LocalSolve is unit curve.curve_p7)
[LengthIntegrand]SmLengthIFEO (constructor, Evaluate)
[FindCurveDistanceExtrema]SmFindCurveDistanceExtremaEFO (constructor, destructor)

Upstream tests reaching this unit

prog_test:my_test_extent3d, prog_test:my_test_vector2d, 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