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 function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmLine::SmLine | SmLine.h:119 | 1 | [Line] |
SmLine::~SmLine | SmLine.h:125 | 1 | Drop (implicit) |
SmLine::CalculateTightBoundingBox | SmLine.h:179 | 6 | [Line::calculate_tight_bounding_box] |
SmLine::GetSTEPInterval | SmLine.h:210 | 1 | [Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots] |
SmLine::GetMaxAnalyticDomain | SmLine.h:212 | 1 | [Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots] |
SmLine::GetDegree | SmLine.h:213 | 1 | [Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots] |
SmLine::GetLinePoint | SmLine.h:214 | 1 | [Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out] |
SmLine::GetLineVector | SmLine.h:215 | 1 | [Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out] |
SmLine::GetLineScale | SmLine.h:216 | 1 | [Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out] |
SmLine::GetNumberNaturalKnots | SmLine.h:217 | 1 | [Line::step_interval], [Line::max_analytic_domain], [Line::degree], [Line::number_natural_knots] |
SmLine::GetInsideOut | SmLine.h:218 | 1 | [Line::line_point], [Line::line_vector], [Line::line_scale], [Line::inside_out] |
SmLine::SetLineScale | SmLine.h:238 | 1 | [Line::set_line_scale], [Line::set_analytic_domain] |
SmLine::SetAnalyticDomain | SmLine.h:240 | 1 | [Line::set_line_scale], [Line::set_analytic_domain] |
SmLine::IsAnalytic | SmLine.h:289 | 1 | [Line::is_analytic], [Line::is_closed], [Line::is_arc] |
SmLine::IsClosed | SmLine.h:291 | 2 | [Line::is_analytic], [Line::is_closed], [Line::is_arc] |
SmLine::IsArc | SmLine.h:301 | 1 | [Line::is_analytic], [Line::is_closed], [Line::is_arc] |
SmLine::GetClassString | SmLine.h:422 | 1 | [Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string] |
SmLine::GetClassType | SmLine.h:422 | 1 | [Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string] |
SmLine::GetType | SmLine.h:422 | 1 | [Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string] |
SmLine::GetTypeString | SmLine.h:422 | 1 | [Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string] |
SmLine::SmLine | SmLine.cpp:37 | 36 | [Line] |
SmLine::SmLine | SmLine.cpp:88 | 47 | [Line] |
SmLine::SmLine | SmLine.cpp:155 | 60 | [Line] |
SmLine::CreateLineSegment | SmLine.cpp:221 | 30 | [Line::create_line_segment] |
SmLine::SmLine | SmLine.cpp:257 | 10 | [Line] |
SmLine::operator== | SmLine.cpp:274 | 27 | [Line::approx_eq] |
SmLine::AdjustSTEPInterval | SmLine.cpp:309 | 21 | [Line::adjust_step_interval] |
SmLine::ApproximateLength | SmLine.cpp:335 | 20 | [Line::approximate_length] |
SmLine::ConvertTo2D | SmLine.cpp:362 | 15 | [Line::convert_to_2d], [Line::convert_to_3d] |
SmLine::ConvertTo3D | SmLine.cpp:383 | 13 | [Line::convert_to_2d], [Line::convert_to_3d] |
SmLine::ConvertTFromSTEPToNURBS | SmLine.cpp:402 | 51 | [Line::convert_t_from_step_to_nurbs] |
SmLine::ConvertTFromNURBSToSTEP | SmLine.cpp:459 | 29 | [Line::convert_t_from_nurbs_to_step] |
SmLine::Copy | SmLine.cpp:494 | 21 | Clone, [Line::copy] |
SmLine::CreateCanonical | SmLine.cpp:523 | 11 | [Line::create_canonical] |
SmLine::CreateSimpleOffset | SmLine.cpp:547 | 50 | [Line::create_simple_offset] |
SmLine::CalculateBoundingBox | SmLine.cpp:605 | 53 | [Line::calculate_bounding_box] |
SmLine::DropPointFast | SmLine.cpp:676 | 94 | [Line::drop_point_fast] |
SmLine::GetNaturalInterval | SmLine.cpp:796 | 9 | [Line::natural_interval] |
SmLine::GetCanonical | SmLine.cpp:813 | 17 | [Line::canonical], [Line::canonical_unit], [LineCanonical] |
SmLine::GlobalPointSolveSTEP | SmLine.cpp:908 | 119 | [Line::global_point_solve_step] |
SmLine::Evaluate | SmLine.cpp:1036 | 41 | [Line::evaluate], [Line::evaluate_step], [Line::evaluate_point] |
SmLine::EvaluateSTEP | SmLine.cpp:1086 | 36 | [Line::evaluate], [Line::evaluate_step], [Line::evaluate_point] |
SmLine::EvaluatePoint | SmLine.cpp:1131 | 13 | [Line::evaluate], [Line::evaluate_step], [Line::evaluate_point] |
SmLine::IsLine | SmLine.cpp:1167 | 17 | [Line::is_line] |
SmLine::IsBounded | SmLine.cpp:1189 | 6 | [Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary] |
SmLine::IsDegenerate | SmLine.cpp:1201 | 40 | [Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary] |
SmLine::IsDomainBoundary | SmLine.cpp:1253 | 25 | [Line::is_bounded], [Line::is_degenerate], [Line::is_domain_boundary] |
SmLine::IntersectWithEllipse | SmLine.cpp:1284 | 47 | [Line::intersect_with_ellipse] |
SmLine::IntersectWithLine | SmLine.cpp:1338 | 122 | [Line::intersect_with_line], [LineLineIntersection] |
SmLine::JoinWith | SmLine.cpp:1474 | 105 | [Line::join_with] |
SmLine::Length | SmLine.cpp:1585 | 30 | [Line::length] |
SmLine::MakeNurb | SmLine.cpp:1631 | 56 | [Line::make_nurb] |
SmLine::RefreshAnalytics | SmLine.cpp:1708 | 62 | [Line::refresh_analytics] |
SmLine::ReverseParameterization | SmLine.cpp:1777 | 37 | [Line::reverse_parameterization] |
SmLine::STEPInversion | SmLine.cpp:1903 | 43 | [Line::step_inversion], [CurveLocationType] |
SmLine::Tessellate | SmLine.cpp:1955 | 102 | [Line::tessellate], [TessellationRequest] |
SmLine::Transform | SmLine.cpp:2063 | 50 | [Line::transform] |
SmLine::DeformToEndPointTargets | SmLine.cpp:2125 | 91 | [Line::deform_to_end_point_targets] |
SmLine::Trim | SmLine.cpp:2224 | 64 | [Line::trim] |
SmLine::AssertValid | SmLine.cpp:2345 | 62 | [Line::assert_valid] |
SmLine::ReadFromDB | SmLine.cpp:2505 | 72 | [Line::read_from_db] |
SmLine::IsKindOf | SmLine.cpp:2582 | 4 | [Line::is_kind_of], [Line::TYPE], [Line::type_string], [Line::class_string] |
Module file-header table (48 rows)
| Rust | Upstream |
|---|---|
[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