solidcore

Units / curve

curve.ellipse_p2 green

Layer
15
Upstream lines
1,916
Functions
44
Rust module
curve::ellipse::p2

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

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

Notes

GREEN (promoted by curve.curve_p5: 2102 cases, 0 deferred after its stubs were wired); PARTIAL: difftest 2102 cases (102 fixture: my_test_analytic_curves circle/ellipse, my_test_drop_curve_near_seam circle (inside-out), smCurveTest circle/circle and line/circle intersection configurations re-expressed as SmEllipse, edge cases: inside-out, negative/near-0/180/360 domains, tiny arcs, skewed axes, pOptNurb, SetSTEPInterval+SetUp, transforms, DropPointFast seams/sub-intervals + 2000 generated op programs), 2005 pass bit-identical (max_rel_err 0), 97 deferred (curve.curve_p5 97: LocalPropertyAnalysis and the curve solvers' Newton equations; curve.ellipse_p1 wiring cleared GlobalPointSolve, ConvertTo2D and GlobalCoincidenceChecker); 30k-seed run clean; --perturb SENSITIVE; co-ported SmEllipse constructor + MakeNurb from curve.ellipse_p1 (Ellipse not yet a CurveKind variant); wired UNPORTED(curve.ellipse_p2) in curve.line (Line::intersect_with_ellipse takes &Ellipse; curve.line deferred 2 -> 1). 44 fns; largest: SmEllipse::IntersectWithEllipse, SmPolarConversion::SetUpPolarConversion, SmEllipse::IntersectWithLine, SmEllipse::DropPointFast; cycle back-edges (call into later units; stub or co-port): curve.curve_p5(3), curve.curve_p1(2), curve.curve_p3(2), curve.curve_p6(1), curve.ellipse_p1(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit

Difftest

Cases
2,102
Passed
2,102
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_p2 green curve.line green geom.axis2_placement green geom.extent1d green geom.geom_utility_p1 green geom.object partial geom.solution_array partial geom.tol green geom.vector3d green nurbs.b_spline_curve_p1 green

Soft dependencies: geom.geom_utility_p2 green

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

Soft dependents: curve.curve_p4 partial curve.curve_p5 partial surface.cone_p1 green surface.cone_p2 claimed surface.cone_p3 partial surface.surf_of_revolution_p3 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmPolarConversion::SmPolarConversionSmEllipse.h:724[PolarConversion], [PolarConversion::new]
SmPolarConversion::SetContextSmEllipse.h:932[PolarConversion::set_context]
SmPolarConversion::IsPolarConversionPossibleSmEllipse.h:961[PolarConversion::is_polar_conversion_possible], [PolarConversion::set_polar_conversion_possible]
SmPolarConversion::SetPolarConversionPossibleSmEllipse.h:981[PolarConversion::is_polar_conversion_possible], [PolarConversion::set_polar_conversion_possible]
SmPolarConversion::GetClassStringSmEllipse.h:1681[PolarConversion::TYPE], [PolarConversion::class_string], [PolarConversion::class_type]
SmPolarConversion::GetClassTypeSmEllipse.h:1691[PolarConversion::TYPE], [PolarConversion::class_string], [PolarConversion::class_type]
SmEllipse::~SmEllipseSmEllipse.h:2901Drop (implicit)
SmEllipse::GetSTEPIntervalSmEllipse.h:3441[Ellipse::step_interval], [Ellipse::set_step_interval], [Ellipse::degree]
SmEllipse::GetDegreeSmEllipse.h:3461[Ellipse::step_interval], [Ellipse::set_step_interval], [Ellipse::degree]
SmEllipse::GetStartAngleDegSmEllipse.h:3471[Ellipse::start_angle_deg], [Ellipse::end_angle_deg], [Ellipse::position]
SmEllipse::GetEndAngleDegSmEllipse.h:3481[Ellipse::start_angle_deg], [Ellipse::end_angle_deg], [Ellipse::position]
SmEllipse::GetPositionSmEllipse.h:3491[Ellipse::start_angle_deg], [Ellipse::end_angle_deg], [Ellipse::position]
SmEllipse::GetXRadiusSmEllipse.h:3501[Ellipse::x_radius], [Ellipse::y_radius], [Ellipse::inside_out]
SmEllipse::GetYRadiusSmEllipse.h:3511[Ellipse::x_radius], [Ellipse::y_radius], [Ellipse::inside_out]
SmEllipse::GetInsideOutSmEllipse.h:3521[Ellipse::x_radius], [Ellipse::y_radius], [Ellipse::inside_out]
SmEllipse::IsAnalyticSmEllipse.h:3891[Ellipse::is_analytic], [Ellipse::is_domain_boundary]
SmEllipse::IsDomainBoundarySmEllipse.h:3972[Ellipse::is_analytic], [Ellipse::is_domain_boundary]
SmEllipse::SetSTEPIntervalSmEllipse.h:4671[Ellipse::step_interval], [Ellipse::set_step_interval], [Ellipse::degree]
SmEllipse::GetClassStringSmEllipse.h:5191[PolarConversion::TYPE], [PolarConversion::class_string], [PolarConversion::class_type]
SmEllipse::GetClassTypeSmEllipse.h:5191[PolarConversion::TYPE], [PolarConversion::class_string], [PolarConversion::class_type]
SmEllipse::GetTypeSmEllipse.h:5191[Ellipse::TYPE], [Ellipse::type_code], [Ellipse::class_type], [Ellipse::type_string], [Ellipse::class_string]
SmEllipse::GetTypeStringSmEllipse.h:5191[Ellipse::TYPE], [Ellipse::type_code], [Ellipse::class_type], [Ellipse::type_string], [Ellipse::class_string]
SmPolarConversion::~SmPolarConversionSmEllipse.cpp:727Drop (implicit)
SmPolarConversion::operator==SmEllipse.cpp:8645[PolarConversion::approx_eq]
SmPolarConversion::SetUpPolarConversionSmEllipse.cpp:174287[Ellipse::set_up_polar_conversion]
SmPolarConversion::ConvertToNURBSParameterSmEllipse.cpp:467184[PolarConversion::convert_to_nurbs_parameter]
SmEllipse::SmEllipseSmEllipse.cpp:103815[Ellipse], [Ellipse::empty]
SmEllipse::operator==SmEllipse.cpp:117128[PolarConversion::approx_eq]
SmPolarConversion::AngleParamToNurbParamSmEllipse.cpp:130395[PolarConversion::angle_param_to_nurb_param]
SmEllipse::ConvertTo3DSmEllipse.cpp:179113[Ellipse::convert_to_3d]
SmEllipse::ConvertTFromSTEPToNURBSSmEllipse.cpp:181354[Ellipse::convert_t_from_step_to_nurbs]
SmEllipse::STEPInversionSmEllipse.cpp:199198[Ellipse::step_inversion]
SmEllipse::GetCanonicalSmEllipse.cpp:216425[Ellipse::canonical], [EllipseCanonical]
SmEllipse::GetMaxAnalyticDomainSmEllipse.cpp:219626[Ellipse::max_analytic_domain]
SmEllipse::TransformPointToStartPlaneSmEllipse.cpp:232868[Ellipse::transform_point_to_start_plane], [EllipseStartPlanePoint]
SmEllipse::DropPointFastSmEllipse.cpp:2415221[Ellipse::drop_point_fast]
SmEllipse::EvaluateSTEPPointSmEllipse.cpp:264414[Ellipse::evaluate_step_point], [Ellipse::evaluate_step]
SmEllipse::EvaluateSTEPSmEllipse.cpp:266769[Ellipse::evaluate_step_point], [Ellipse::evaluate_step]
SmEllipse::IntersectWithEllipseSmEllipse.cpp:2743313[Ellipse::intersect_with_ellipse], [EllipseIntersection]
SmEllipse::IntersectWithLineSmEllipse.cpp:3065232[Ellipse::intersect_with_line]
SmEllipse::IsCircleSmEllipse.cpp:330312[Ellipse::is_circle], [Ellipse::is_degenerate]
SmEllipse::IsDegenerateSmEllipse.cpp:332120[Ellipse::is_circle], [Ellipse::is_degenerate]
SmEllipse::TransformSmEllipse.cpp:397859[Ellipse::transform]
SmEllipse::IsKindOfSmEllipse.cpp:43554[Ellipse::is_kind_of]
Module file-header table (31 rows)
RustUpstream
[PolarConversion], [PolarConversion::new]SmPolarConversion, SmPolarConversion()
Drop (implicit)~SmPolarConversion
[PolarConversion::approx_eq]SmPolarConversion::operator==
[PolarConversion::set_context]SmPolarConversion::SetContext
[PolarConversion::is_polar_conversion_possible], [PolarConversion::set_polar_conversion_possible]IsPolarConversionPossible, SetPolarConversionPossible
[PolarConversion::TYPE], [PolarConversion::class_string], [PolarConversion::class_type]SmPolarConversion_TYPE, GetClassString, GetClassType
[Ellipse::set_up_polar_conversion]SmPolarConversion::SetUpPolarConversion(this, TRUE, ..)
[PolarConversion::convert_to_nurbs_parameter]SmPolarConversion::ConvertToNURBSParameter
[PolarConversion::angle_param_to_nurb_param]SmPolarConversion::AngleParamToNurbParam (private)
[Ellipse], [Ellipse::empty]SmEllipse, SmEllipse(lDimension, cpContext)
Drop (implicit)~SmEllipse
[Ellipse::new], [EllipseOptions]SmEllipse(Center, XAxis, YAxis, AnalDomain, ..) (co-ported from curve.ellipse_p1)
[Ellipse::approx_eq]operator==
[Ellipse::convert_to_3d]ConvertTo3D
[Ellipse::convert_t_from_step_to_nurbs]ConvertTFromSTEPToNURBS
[Ellipse::step_inversion]STEPInversion
[Ellipse::canonical], [EllipseCanonical]GetCanonical
[Ellipse::max_analytic_domain]GetMaxAnalyticDomain
[Ellipse::transform_point_to_start_plane], [EllipseStartPlanePoint]TransformPointToStartPlane
[Ellipse::drop_point_fast]DropPointFast
[Ellipse::evaluate_step_point], [Ellipse::evaluate_step]EvaluateSTEPPoint, EvaluateSTEP
[Ellipse::intersect_with_ellipse], [EllipseIntersection]IntersectWithEllipse
[Ellipse::intersect_with_line]IntersectWithLine
[Ellipse::is_circle], [Ellipse::is_degenerate]IsCircle, IsDegenerate
[Ellipse::transform]Transform
[Ellipse::is_kind_of]IsKindOf
[Ellipse::TYPE], [Ellipse::type_code], [Ellipse::class_type], [Ellipse::type_string], [Ellipse::class_string]GetType, GetClassType, GetTypeString, GetClassString (SM_COMMON)
[Ellipse::step_interval], [Ellipse::set_step_interval], [Ellipse::degree]GetSTEPInterval, SetSTEPInterval, GetDegree (inline)
[Ellipse::start_angle_deg], [Ellipse::end_angle_deg], [Ellipse::position]GetStartAngleDeg, GetEndAngleDeg, GetPosition (inline)
[Ellipse::x_radius], [Ellipse::y_radius], [Ellipse::inside_out]GetXRadius, GetYRadius, GetInsideOut (inline)
[Ellipse::is_analytic], [Ellipse::is_domain_boundary]IsAnalytic, IsDomainBoundary (inline)

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