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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCurve::CalculateContinuities | SmCurve.h:197 | 4 | [Curve::calculate_continuities] |
SmCurve::ConvertTo2D | SmCurve.h:222 | 1 | [Curve::convert_to_2d] |
SmCurve::CreateAnalyticCurve | SmCurve.h:240 | 4 | [Curve::create_analytic_curve] |
SmCurve::DropPointFast | SmCurve.h:359 | 20 | [Curve::drop_point_fast] |
SmCurve::Evaluate | SmCurve.h:390 | 16 | [Curve::evaluate], [Curve::evaluate_point] |
SmCurve::EvaluatePoint | SmCurve.h:407 | 3 | [Curve::evaluate], [Curve::evaluate_point] |
SmCurve::GetDegree | SmCurve.h:465 | 1 | [Curve::degree], [Curve::dim], [Curve::natural_interval] |
SmCurve::GetDim | SmCurve.h:466 | 1 | [Curve::degree], [Curve::dim], [Curve::natural_interval] |
SmCurve::GetNaturalInterval | SmCurve.h:467 | 1 | [Curve::degree], [Curve::dim], [Curve::natural_interval] |
SmCurve::GetNumberNaturalKnots | SmCurve.h:470 | 1 | [Curve::number_natural_knots], [Curve::number_control_points] |
SmCurve::GetNumberControlPoints | SmCurve.h:471 | 1 | [Curve::number_natural_knots], [Curve::number_control_points] |
SmCurve::GetOwner | SmCurve.h:472 | 1 | [Curve::owner], [Curve::set_owner], [OwnerChange] |
SmCurve::IsAnalytic | SmCurve.h:704 | 1 | [Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational] |
SmCurve::IsBounded | SmCurve.h:706 | 1 | [Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational] |
SmCurve::HasRepeatedEndControlPoints | SmCurve.h:743 | 1 | [Curve::has_repeated_end_control_points] |
SmCurve::IsRational | SmCurve.h:747 | 1 | [Curve::is_analytic], [Curve::is_bounded], [Curve::is_rational] |
SmCurve::ReverseParameterization | SmCurve.h:865 | 3 | [Curve::reverse_parameterization], [Curve::edit_parameterization] |
SmCurve::EditParameterization | SmCurve.h:870 | 3 | [Curve::reverse_parameterization], [Curve::edit_parameterization] |
SmCurve::STEPInversion | SmCurve.h:882 | 8 | [Curve::step_inversion] |
SmCurve::Transform | SmCurve.h:909 | 5 | [Curve::transform], [Curve::trim] |
SmCurve::Trim | SmCurve.h:937 | 4 | [Curve::transform], [Curve::trim] |
SmCurve::GetClassString | SmCurve.h:1010 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string] |
SmCurve::GetClassType | SmCurve.h:1010 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string] |
SmCurve::GetType | SmCurve.h:1010 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string] |
SmCurve::GetTypeString | SmCurve.h:1010 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [Curve::type_code], [Curve::type_string], [Curve::class_string] |
SmCurve::~SmCurve | SmCurve.h:1263 | 8 | Drop (implicit), Clone |
SmCurve::Copy | SmCurve.h:1277 | 16 | [Curve::copy] |
SmFindCurveDistanceExtremaEFO::SmFindCurveDistanceExtremaEFO | SmCurve.h:1343 | 8 | [FindCurveDistanceExtrema] |
SmFindCurveDistanceExtremaEFO::~SmFindCurveDistanceExtremaEFO | SmCurve.h:1362 | 1 | |
sm_ConvertToParameterDelta | SmCurve.cpp:216 | 11 | [convert_to_parameter_delta] |
sm_PushPoint | SmCurve.cpp:359 | 22 | [push_point], [pop_stack], [stack_look] |
sm_PopStack | SmCurve.cpp:388 | 24 | [push_point], [pop_stack], [stack_look] |
sm_StackLook | SmCurve.cpp:419 | 28 | [push_point], [pop_stack], [stack_look] |
sm_FlushCrv | SmCurve.cpp:455 | 170 | [flush_crv] |
sm_AddToCurve | SmCurve.cpp:633 | 56 | [add_to_curve] |
SmCurve::operator== | SmCurve.cpp:696 | 15 | [Curve::approx_eq] |
SmCurve::SetOwner | SmCurve.cpp:718 | 18 | [Curve::owner], [Curve::set_owner], [OwnerChange] |
SmCurve::IntersectWithLine | SmCurve.cpp:1306 | 15 | [Curve::intersect_with_line], [LineIntersection] |
SmCurve::ApproximateLength | SmCurve.cpp:2187 | 85 | [approximate_length], [Curve::approximate_length] |
SmCurve::ConvertTFromNURBSToSTEP | SmCurve.cpp:2281 | 9 | [Curve::convert_t_from_nurbs_to_step], [Curve::convert_t_from_step_to_nurbs] |
SmCurve::ConvertTFromSTEPToNURBS | SmCurve.cpp:2299 | 8 | [Curve::convert_t_from_nurbs_to_step], [Curve::convert_t_from_step_to_nurbs] |
SmCurve::CreateBySplitCurve | SmCurve.cpp:2391 | 31 | [Curve::create_by_split_curve] |
SmCurve::SurfaceMaxDistanceBetween | SmCurve.cpp:2925 | 244 | [Curve::surface_max_distance_between], [SurfaceGap] |
sm_SnapSolToSpecifiedEndpoint | SmCurve.cpp:3183 | 72 | [snap_sol_to_specified_endpoint] |
SmCurve::EvaluateSTEP | SmCurve.cpp:3527 | 20 | [evaluate_step] |
SmCurve::EuclidianStepOff | SmCurve.cpp:3577 | 79 | [euclidian_step_off], [StepOff] |
SmCurve::EvaluateGeometric | SmCurve.cpp:3675 | 29 | [evaluate_geometric] |
SmCurve::EvaluateContinuity | SmCurve.cpp:3716 | 198 | [evaluate_continuity], [CurveContinuity] |
SmCurve::GetKnots | SmCurve.cpp:4162 | 14 | [Curve::knots], [Curve::ends], [base_ends] |
SmCurve::GetEnds | SmCurve.cpp:4182 | 18 | [Curve::knots], [Curve::ends], [base_ends] |
SmCurve::GetEdge | SmCurve.cpp:4206 | 23 | [Curve::edge] |
SmCCIGlobalSolver::SmCCIGlobalSolver | SmCurve.cpp:4520 | 22 | [CciGlobalSolver] |
sm_UnitizeTangent | SmCurve.cpp:4549 | 51 | [unitize_tangent] |
SmCCGlobalSolver::SmCCGlobalSolver | SmCurve.cpp:8224 | 10 | [CcGlobalSolver] |
SmCCGlobalSolver::BranchMayContainAnswers | SmCurve.cpp:8241 | 142 | [CcGlobalSolver] |
sm_GetProjSignedAngle | SmCurve.cpp:8444 | 27 | [proj_signed_angle] |
SmCPGlobalSolver::SmCPGlobalSolver | SmCurve.cpp:10865 | 11 | [CpGlobalSolver] |
SmCPGlobalSolver::BranchMayContainAnswers | SmCurve.cpp:10882 | 59 | [CcGlobalSolver] |
SmCurvePropertyGS::SmCurvePropertyGS | SmCurve.cpp:11991 | 14 | [CurvePropertyGs], [CurvePropertyType] |
SmCurvePropertyGS::FindBestSubdivisionNode | SmCurve.cpp:12011 | 108 | [CurvePropertyGs], [CurvePropertyType] |
SmCurvePropertyGS::BranchMayContainAnswers | SmCurve.cpp:12141 | 251 | [CcGlobalSolver] |
SmCurve::IsKindOf | SmCurve.cpp:14529 | 4 | [is_kind_of], [Curve::is_kind_of] |
SmLengthIFEO::SmLengthIFEO | SmCurve.cpp:14575 | 3 | [LengthIntegrand] |
SmLengthIFEO::Evaluate | SmCurve.cpp:14589 | 13 | [Curve::evaluate], [Curve::evaluate_point] |
SmCurvePropertyEFO::~SmCurvePropertyEFO | SmCurve.cpp:14844 | 1 | |
SmCCTangentIntENFO::~SmCCTangentIntENFO | SmCurve.cpp:16128 | 1 | |
SmCCIntersectENFO::~SmCCIntersectENFO | SmCurve.cpp:16517 | 1 | |
SmCCIntersectENFO::HasIntervals | SmCurve.cpp:16519 | 1 | |
SmCCIntersectENFO::SetIntervals | SmCurve.cpp:16520 | 11 | |
SmFindCCNormalENFO::~SmFindCCNormalENFO | SmCurve.cpp:17156 | 1 | |
SmFindPCExtremaEFO::~SmFindPCExtremaEFO | SmCurve.cpp:18228 | 1 | |
SmCPDistAtENFO::~SmCPDistAtENFO | SmCurve.cpp:18447 | 1 | |
SmBestLineFitENFO::HasIntervals | SmCurve.cpp:18685 | 1 | |
SmBestLineFitENFO::SetIntervals | SmCurve.cpp:18686 | 6 | |
SmCurve::Notify | SmCurve.cpp:19329 | 50 | [notify] |
sm_Output | SmCurve.cpp:20911 | 12 | [output] |
sm_TestStep | SmCurve.cpp:20932 | 94 | [test_step], [TessStepResult] |
sm_FindTestParams | SmCurve.cpp:21032 | 68 | [find_test_params] |
SmCurve::ReadFromDB | SmCurve.cpp:23709 | 31 | [Curve::read_from_db] |
Module file-header table (49 rows)
| Rust | Upstream |
|---|---|
[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