solidcore

Units / curve

curve.line green

Layer
14
Upstream lines
1,884
Functions
62
Rust module
curve::line

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

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

Notes

GREEN (promoted by curve.curve_p5: 2103 cases, 0 deferred after its stubs were wired); PARTIAL: difftest 2103 cases (103 fixture: my_test_reversed_line_join x16, smTopoTest canonical lines + AdjustSTEPInterval, my_test_analytic_curves line, my_test_bsplinecurve_nlib line deform/copy, SM_API TestSmCurves/TestSmBrep lines, edge cases: degenerate/zero-vector/inside-out/infinite/2D lines, ReadFromDB ASCII+binary v30/v33/2D/rational, line/line intersections incl. overlap ranges, drop/GPS/STEP inversion, trims, joins, deform, offset, transform, AssertValid + 2000 generated programs of up to 6 ops), 2102 pass bit-identical (max_rel_err 0), 1 deferred (curve.curve_p4 1: SmCurve::AssertValid; IntersectWithEllipse wired by curve.ellipse_p2); 40k-seed run clean; --perturb SENSITIVE; co-ported SmCurve::EvaluateSTEPPoint for lines; wired UNPORTED(curve.line) in curve.curve_p2 (ReadFromDB), nurbs.b_spline_curve_p2 (CreateAnalyticCurve), nurbs.b_spline_curve_p3 (unreachable JoinWith branch dropped), curve.iso_curve (CreateUVIsoLine); fixed nurbs.b_spline_curve_n_lib DeformToEndPointTargets to ignore DegreeElevate status as upstream (see findings). 62 fns; largest: SmLine::IntersectWithLine, SmLine::GlobalPointSolveSTEP, SmLine::JoinWith, SmLine::Tessellate; cycle back-edges (call into later units; stub or co-port): curve.curve_p5(6), curve.ellipse_p2(1), 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; after curve.curve_p7: the 1 deferred case is now blocked by curve.curve_p5

Difftest

Cases
2,103
Passed
2,103
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 geom.assert_array green geom.extent1d green geom.extent2d green geom.extent3d green geom.object partial geom.pseudo_box green 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.axis2_placement green geom.geom_utility_p1 green geom.geom_utility_p2 green geom.polar_box green nurbs.nurbs_crv green

Dependents: curve.ellipse_p2 green primitive.primitive_creation_p1 claimed query.face_p3 claimed surface.cone_p1 green surface.plane_p1 partial surface.plane_p2 partial

Soft dependents: blend.fillet_corner_p1 todo blend.fillet_solver_p2 todo curve.crv_on_surf partial curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green curve.curve_p9 green intersect.curve_class_p8 partial intersect.ray_tracer partial intersect.surface_drop_curve partial primitive.api_curves green primitive.api_primitives claimed surface.cone_p2 claimed surface.cone_p3 partial surface.surf_of_extrusion_p1 green surface.surf_of_revolution_p2 partial surface.surface_p1 partial surface.surface_p10 partial surface.surface_p4 green surface.surface_p6 green surface.surface_p8 partial surface.unbend_volume green surface.volume_p1 green sweep.rotational_sweep_geometry partial sweep.trans_sweep_geometry partial topology.brep_p8 claimed topology.face_p1 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmLine::SmLineSmLine.h:1191[Line]
SmLine::~SmLineSmLine.h:1251Drop (implicit)
SmLine::CalculateTightBoundingBoxSmLine.h:1796[Line::calculate_tight_bounding_box]
SmLine::GetSTEPIntervalSmLine.h:2101[Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots]
SmLine::GetMaxAnalyticDomainSmLine.h:2121[Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots]
SmLine::GetDegreeSmLine.h:2131[Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots]
SmLine::GetLinePointSmLine.h:2141[Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out]
SmLine::GetLineVectorSmLine.h:2151[Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out]
SmLine::GetLineScaleSmLine.h:2161[Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out]
SmLine::GetNumberNaturalKnotsSmLine.h:2171[Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots]
SmLine::GetInsideOutSmLine.h:2181[Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out]
SmLine::SetLineScaleSmLine.h:2381[Line::set_line_scale], [Line::set_analytic_domain]
SmLine::SetAnalyticDomainSmLine.h:2401[Line::set_line_scale], [Line::set_analytic_domain]
SmLine::IsAnalyticSmLine.h:2891[Line::is_analytic], [Line::is_closed], [Line::is_arc]
SmLine::IsClosedSmLine.h:2912[Line::is_analytic], [Line::is_closed], [Line::is_arc]
SmLine::IsArcSmLine.h:3011[Line::is_analytic], [Line::is_closed], [Line::is_arc]
SmLine::GetClassStringSmLine.h:4221[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]
SmLine::GetClassTypeSmLine.h:4221[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]
SmLine::GetTypeSmLine.h:4221[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]
SmLine::GetTypeStringSmLine.h:4221[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]
SmLine::SmLineSmLine.cpp:3736[Line]
SmLine::SmLineSmLine.cpp:8847[Line]
SmLine::SmLineSmLine.cpp:15560[Line]
SmLine::CreateLineSegmentSmLine.cpp:22130[Line::create_line_segment]
SmLine::SmLineSmLine.cpp:25710[Line]
SmLine::operator==SmLine.cpp:27427[Line::approx_eq]
SmLine::AdjustSTEPIntervalSmLine.cpp:30921[Line::adjust_step_interval]
SmLine::ApproximateLengthSmLine.cpp:33520[Line::approximate_length]
SmLine::ConvertTo2DSmLine.cpp:36215[Line::convert_to_2d], [Line::convert_to_3d]
SmLine::ConvertTo3DSmLine.cpp:38313[Line::convert_to_2d], [Line::convert_to_3d]
SmLine::ConvertTFromSTEPToNURBSSmLine.cpp:40251[Line::convert_t_from_step_to_nurbs]
SmLine::ConvertTFromNURBSToSTEPSmLine.cpp:45929[Line::convert_t_from_nurbs_to_step]
SmLine::CopySmLine.cpp:49421Clone, [Line::copy]
SmLine::CreateCanonicalSmLine.cpp:52311[Line::create_canonical]
SmLine::CreateSimpleOffsetSmLine.cpp:54750[Line::create_simple_offset]
SmLine::CalculateBoundingBoxSmLine.cpp:60553[Line::calculate_bounding_box]
SmLine::DropPointFastSmLine.cpp:67694[Line::drop_point_fast]
SmLine::GetNaturalIntervalSmLine.cpp:7969[Line::natural_interval]
SmLine::GetCanonicalSmLine.cpp:81317[Line::canonical], [Line::canonical_unit], [LineCanonical]
SmLine::GlobalPointSolveSTEPSmLine.cpp:908119[Line::global_point_solve_step]
SmLine::EvaluateSmLine.cpp:103641[Line::evaluate], [Line::evaluate_step], [Line::evaluate_point]
SmLine::EvaluateSTEPSmLine.cpp:108636[Line::evaluate], [Line::evaluate_step], [Line::evaluate_point]
SmLine::EvaluatePointSmLine.cpp:113113[Line::evaluate], [Line::evaluate_step], [Line::evaluate_point]
SmLine::IsLineSmLine.cpp:116717[Line::is_line]
SmLine::IsBoundedSmLine.cpp:11896[Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary]
SmLine::IsDegenerateSmLine.cpp:120140[Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary]
SmLine::IsDomainBoundarySmLine.cpp:125325[Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary]
SmLine::IntersectWithEllipseSmLine.cpp:128447[Line::intersect_with_ellipse]
SmLine::IntersectWithLineSmLine.cpp:1338122[Line::intersect_with_line], [LineLineIntersection]
SmLine::JoinWithSmLine.cpp:1474105[Line::join_with]
SmLine::LengthSmLine.cpp:158530[Line::length]
SmLine::MakeNurbSmLine.cpp:163156[Line::make_nurb]
SmLine::RefreshAnalyticsSmLine.cpp:170862[Line::refresh_analytics]
SmLine::ReverseParameterizationSmLine.cpp:177737[Line::reverse_parameterization]
SmLine::STEPInversionSmLine.cpp:190343[Line::step_inversion], [CurveLocationType]
SmLine::TessellateSmLine.cpp:1955102[Line::tessellate], [TessellationRequest]
SmLine::TransformSmLine.cpp:206350[Line::transform]
SmLine::DeformToEndPointTargetsSmLine.cpp:212591[Line::deform_to_end_point_targets]
SmLine::TrimSmLine.cpp:222464[Line::trim]
SmLine::AssertValidSmLine.cpp:234562[Line::assert_valid]
SmLine::ReadFromDBSmLine.cpp:250572[Line::read_from_db]
SmLine::IsKindOfSmLine.cpp:25824[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]
Module file-header table (48 rows)
RustUpstream
[Line]SmLine
[Line::default]SmLine()
[Line::from_points]SmLine(StartPoint, EndPoint, lDimension, cpContext)
[Line::from_parts]the members as they are (an importer's constructor)
[Line::infinite]SmLine(LinePoint, NonUnitVector, lDim, bMakeNurb, cpContext, bInsideOut)
[Line::bounded], [BoundedLineOptions]SmLine(LinePoint, UnitVector, AnalDomain, dScale, lDim, cpContext, pOptNurb, bInsideOut)
[Line::create_line_segment]CreateLineSegment
[Line::create_canonical]CreateCanonical
Clone, [Line::copy]copy constructor, Copy
Drop (implicit)~SmLine
[Line::approx_eq]operator==
[Line::adjust_step_interval]AdjustSTEPInterval
[Line::approximate_length]ApproximateLength
[Line::convert_to_2d], [Line::convert_to_3d]ConvertTo2D, ConvertTo3D
[Line::convert_t_from_step_to_nurbs]ConvertTFromSTEPToNURBS
[Line::convert_t_from_nurbs_to_step]ConvertTFromNURBSToSTEP
[Line::create_simple_offset]CreateSimpleOffset
[Line::calculate_bounding_box]CalculateBoundingBox
[Line::calculate_tight_bounding_box]CalculateTightBoundingBox
[Line::drop_point_fast]DropPointFast
[Line::natural_interval]GetNaturalInterval
[Line::canonical], [Line::canonical_unit], [LineCanonical]GetCanonical (both overloads)
[Line::global_point_solve_step]GlobalPointSolveSTEP
[Line::evaluate], [Line::evaluate_step], [Line::evaluate_point]Evaluate, EvaluateSTEP, EvaluatePoint
[Line::is_line]IsLine
[Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary]IsBounded, IsDegenerate, IsDomainBoundary
[Line::is_analytic], [Line::is_closed], [Line::is_arc]IsAnalytic, IsClosed, IsArc (inline)
[Line::intersect_with_ellipse]IntersectWithEllipse
[Line::intersect_with_line], [LineLineIntersection]IntersectWithLine
[Line::join_with]JoinWith
[Line::length]Length
[Line::ends], [Line::ends_copy], [Line::base_with_nurb]SmBSplineCurve::GetEnds, GetOrCreateGwNurbPointer (inherited)
[Line::edit_parameterization]SmBSplineCurve::EditParameterization (inherited)
[Line::create_analytic_curve]SmBSplineCurve::CreateAnalyticCurve (inherited)
[Line::make_nurb]MakeNurb
[Line::refresh_analytics]RefreshAnalytics
[Line::reverse_parameterization]ReverseParameterization
[Line::step_inversion], [CurveLocationType]STEPInversion, SmCurveLocationType
[Line::tessellate], [TessellationRequest]Tessellate
[Line::transform]Transform
[Line::deform_to_end_point_targets]DeformToEndPointTargets
[Line::trim]Trim
[Line::assert_valid]AssertValid
[Line::read_from_db]ReadFromDB
[Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string]IsKindOf, GetType, GetClassType, GetTypeString, GetClassString (SM_COMMON)
[Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots]GetSTEPInterval, GetMaxAnalyticDomain, GetDegree, GetNumberNaturalKnots (inline)
[Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out]GetLinePoint, GetLineVector, GetLineScale, GetInsideOut (inline)
[Line::set_line_scale], [Line::set_analytic_domain]SetLineScale, SetAnalyticDomain (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