solidcore

Units / curve

curve.ellipse_p1 green

Layer
19
Upstream lines
1,930
Functions
39
Rust module
curve::ellipse::p1

Source: crates/solidcore/src/curve/ellipse/p1.rs

Upstream: source/SMLib/inc/SmCircle.h, source/SMLib/src/SmCircle.cpp, source/SMLib/src/SmEllipse.cpp

Notes

GREEN (promoted by curve.curve_p5: 2028 cases, 0 deferred after its stubs were wired); PARTIAL: difftest 2028 cases (28 fixture: my_test_analytic_curves circle/ellipse (CreateCanonical, AdjustSTEPInterval, GlobalPointSolveSTEP, ReverseParameterization), smSurfaceTest cylinder circle inside-out, smTopoTest CreateCanonical + AdjustSTEPInterval / EditParameterization circles, smCurveTest circle copy constructor, edge cases: non-positive radius, collinear / 2D / closed 3-point circles, joins (overlap, flipped normal, non-ellipse), circle offsets, skewed ConvertTo2D, 2D construction, Trim modes; + 2000 generated programs over constructors, CreateCanonical and ReadFromDB records), 1896 pass bit-identical (max_rel_err 0), 132 deferred (curve.curve_p5 132: LocalPointSolve / LocalPropertyAnalysis / SmCurve::IsArc); --perturb SENSITIVE; SmEllipse and SmCircle join Curve as CurveKind::Ellipse (Curve methods whose ellipse override rebuilds the polar converter take &Kernel); wired UNPORTED(curve.ellipse_p1) in curve.curve_p2 (ReadFromDB), curve.ellipse_p2 (GlobalPointSolve, GlobalCoincidenceChecker), nurbs.b_spline_curve_p2 (CreateAnalyticCurve SmCircle), nurbs.b_spline_surface_p2 (sweep circle). 39 fns; largest: SmEllipse::MakeNurb, SmPolarConversion::ConvertToPolarParameter, SmEllipse::JoinWith, SmEllipse::Trim; cycle back-edges (call into later units; stub or co-port): surface.surf_of_extrusion_p1(1), surface.surf_of_revolution_p1(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit

Difftest

Cases
2,028
Passed
2,028
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.curve_p1 partial curve.curve_p2 green curve.curve_p4 partial curve.ellipse_p2 green geom.assert_array green geom.axis2_placement green geom.extent1d green geom.object partial geom.solution_array partial geom.tol green geom.vector3d green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green nurbs.b_spline_curve_p3 partial topology.database_io green

Soft dependencies: geom.geom_utility_p1 green geom.polynomial green nlib.crv_basic green nlib.crv_common green nurbs.b_spline_surface_p1 green nurbs.nurbs_crv green

Dependents: surface.sphere green surface.surf_of_revolution_p1 green surface.torus green

Soft dependents: primitive.api_curves green primitive.primitive_creation_p1 claimed primitive.primitive_creation_p2 todo primitive.primitive_creation_p3 todo surface.cone_p1 green surface.cone_p2 claimed surface.cone_p3 partial surface.plane_p2 partial surface.surf_of_revolution_p3 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmCircle::SmCircleSmCircle.h:1001[Ellipse::new_circle]
SmCircle::~SmCircleSmCircle.h:1061Drop (implicit)
SmCircle::GetRadiusSmCircle.h:1311[Ellipse::radius], [Ellipse::set_radius]
SmCircle::SetRadiusSmCircle.h:1561[Ellipse::radius], [Ellipse::set_radius]
SmCircle::GetClassStringSmCircle.h:1831[Ellipse::type_code], [Ellipse::type_string], [Ellipse::class_string] (in p2), [CIRCLE_CLASS_TYPE]
SmCircle::GetClassTypeSmCircle.h:1831[Ellipse::type_code], [Ellipse::type_string], [Ellipse::class_string] (in p2), [CIRCLE_CLASS_TYPE]
SmCircle::GetTypeSmCircle.h:1831[Ellipse::type_code], [Ellipse::type_string], [Ellipse::class_string] (in p2), [CIRCLE_CLASS_TYPE]
SmCircle::GetTypeStringSmCircle.h:1831[Ellipse::type_code], [Ellipse::type_string], [Ellipse::class_string] (in p2), [CIRCLE_CLASS_TYPE]
SmCircle::SmCircleSmCircle.cpp:2729[Ellipse::new_circle]
SmCircle::SmCircleSmCircle.cpp:6835[Ellipse::new_circle]
SmCircle::SmCircleSmCircle.cpp:10917[Ellipse::new_circle]
SmCircle::operator==SmCircle.cpp:13314[Ellipse::approx_eq] (in p2)
SmCircle::CopySmCircle.cpp:15311[Ellipse::copy] (circle)
SmCircle::CreateCanonicalSmCircle.cpp:17137[Ellipse::create_canonical_circle]
SmCircle::IsArcSmCircle.cpp:29415[Ellipse::is_arc]
SmCircle::CreateSimpleOffsetSmCircle.cpp:32172[Ellipse::create_simple_offset]
SmCircle::AssertValidSmCircle.cpp:40925[Ellipse::assert_valid]
SmCircle::ReadFromDBSmCircle.cpp:50331[Ellipse::read_from_db]
SmCircle::IsKindOfSmCircle.cpp:5394[Ellipse::is_circle_class], [Ellipse::kind_of]
SmPolarConversion::SmPolarConversionSmEllipse.cpp:4026Clone of [PolarConversion]
SmPolarConversion::ConvertToPolarParameterSmEllipse.cpp:658183[PolarConversion::convert_to_polar_parameter]
SmPolarConversion::IsCurrentSmEllipse.cpp:859116[PolarConversion::is_current]
SmPolarConversion::AssertValidSmEllipse.cpp:99141[PolarConversion::assert_valid]
SmEllipse::SmEllipseSmEllipse.cpp:105985[Ellipse::new] (in p2)
SmEllipse::SmEllipseSmEllipse.cpp:115014[Ellipse::new] (in p2)
SmPolarConversion::ReadFromDBSmEllipse.cpp:1488116[PolarConversion::read_from_db], [PolarConversion::read_from_db_with_curve]
SmEllipse::ConvertTo2DSmEllipse.cpp:1674111[Ellipse::convert_to_2d]
SmEllipse::ConvertTFromNURBSToSTEPSmEllipse.cpp:187622[Ellipse::convert_t_from_nurbs_to_step]
SmEllipse::AdjustSTEPIntervalSmEllipse.cpp:190570[Ellipse::adjust_step_interval]
SmEllipse::CopySmEllipse.cpp:209522[Ellipse::copy], Clone
SmEllipse::CreateCanonicalSmEllipse.cpp:212335[Ellipse::create_canonical]
SmEllipse::GlobalPointSolveSTEPSmEllipse.cpp:223881[Ellipse::global_point_solve_step]
SmEllipse::JoinWithSmEllipse.cpp:3354152[Ellipse::join_with]
SmEllipse::MakeNurbSmEllipse.cpp:3515190[Ellipse::make_nurb], [Ellipse::make_nurb_owned]
SmEllipse::NotifySmEllipse.cpp:371671[Ellipse::notify]
SmEllipse::ReverseParameterizationSmEllipse.cpp:381217[Ellipse::reverse_parameterization]
SmEllipse::TrimSmEllipse.cpp:3836136[Ellipse::trim]
SmEllipse::AssertValidSmEllipse.cpp:409358[Ellipse::assert_valid]
SmEllipse::ReadFromDBSmEllipse.cpp:426486[Ellipse::read_from_db]
Module file-header table (32 rows)
RustUpstream
[Ellipse::new] (in p2)SmEllipse(Center, XAxis, YAxis, AnalDomain, ..)
[Ellipse::copy], CloneSmEllipse(const SmEllipse&), SmEllipse::Copy
[Ellipse::create_canonical]SmEllipse::CreateCanonical
[Ellipse::new_circle]SmCircle(Center, XAxis, YAxis, AnalDomain, dRadius, ..)
[Ellipse::circle_from_3_points]SmCircle(StartPoint, MidPoint, EndPoint, ..)
[Ellipse::empty_circle]SmCircle()
[Ellipse::copy] (circle)SmCircle(const SmCircle&), SmCircle::Copy
[Ellipse::create_canonical_circle]SmCircle::CreateCanonical
Drop (implicit)~SmCircle
[Ellipse::approx_eq] (in p2)SmCircle::operator==
[Ellipse::radius], [Ellipse::set_radius]SmCircle::GetRadius, SmCircle::SetRadius
[Ellipse::is_circle_class], [Ellipse::kind_of]SmCircle_TYPE objects, SmCircle::IsKindOf
[Ellipse::type_code], [Ellipse::type_string], [Ellipse::class_string] (in p2), [CIRCLE_CLASS_TYPE]SmCircle::GetType, GetTypeString, GetClassString, GetClassType
[Ellipse::is_arc]SmCircle::IsArc
[Ellipse::create_simple_offset]SmCircle::CreateSimpleOffset
[Ellipse::assert_valid]SmEllipse::AssertValid, SmCircle::AssertValid
[Ellipse::read_from_db]SmEllipse::ReadFromDB, SmCircle::ReadFromDB
[Ellipse::convert_to_2d]SmEllipse::ConvertTo2D
[Ellipse::convert_t_from_nurbs_to_step]SmEllipse::ConvertTFromNURBSToSTEP
[Ellipse::adjust_step_interval]SmEllipse::AdjustSTEPInterval
[Ellipse::global_point_solve_step]SmEllipse::GlobalPointSolveSTEP
[Ellipse::join_with]SmEllipse::JoinWith
[Ellipse::make_nurb], [Ellipse::make_nurb_owned]SmEllipse::MakeNurb
[Ellipse::notify]SmEllipse::Notify
[Ellipse::reverse_parameterization]SmEllipse::ReverseParameterization
[Ellipse::trim]SmEllipse::Trim
[Ellipse::edit_parameterization]SmBSplineCurve::EditParameterization on an ellipse (virtual MakeNurb, Notify)
Clone of [PolarConversion]SmPolarConversion(crContext, crSource)
[PolarConversion::convert_to_polar_parameter]SmPolarConversion::ConvertToPolarParameter
[PolarConversion::is_current]SmPolarConversion::IsCurrent
[PolarConversion::assert_valid]SmPolarConversion::AssertValid
[PolarConversion::read_from_db], [PolarConversion::read_from_db_with_curve]SmPolarConversion::ReadFromDB (ellipse back pointer; null back pointer, from SmSurfOfRevolution::ReadFromDB)

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