Units / nurbs
nlib.crv_basic green
- Layer
- 4
- Upstream lines
- 1,542
- Functions
- 46
- Rust module
nurbs::crv_basic
Source: crates/solidcore/src/nurbs/crv_basic.rs
Upstream: source/SMLib/src/NL_CrvBasic.cpp, source/SMLib/src/NL_SrfSymbol.cpp
Notes
46 fns; largest: N_CrvIsPlanar, N_CrossBoundDerivCrvNonRatSrf, N_CrvsAreCombatible, N_CrvIsLine; cycle back-edges (call into later units; stub or co-port): nlib.crv_tool_p2(1); unit-SCC #6 (5 units); 317 upstream test entry points reach this unit; difftest 3417 cases (417 fixture + 3000 generated), 3417 pass bit-identical, 0 deferred (promoted when nlib.crv_tool_p2 wired N_CrvsMakeCompatible); no UNPORTED(nlib.crv_basic) stubs to wire
Difftest
- Cases
- 3,417
- Passed
- 3,417
- 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: nlib.funcs_basic green nlib.geom green nlib.math green
Soft dependencies: nlib.srf_basic green
Dependents: nlib.crv_adv_p1 green nlib.crv_adv_p2 green nlib.crv_approx green nlib.crv_common green nlib.crv_fit_p2 green nlib.crv_fit_p3 green nlib.crv_geom green nlib.crv_nurb green nlib.crv_offset green nlib.crv_tool_p1 green nlib.crv_tool_p2 green nlib.funcs_adv green nlib.iges green nlib.srf_adv_p1 green nlib.srf_adv_p2 green nlib.srf_adv_p3 green nlib.srf_adv_p4 green nlib.srf_adv_p5 green nlib.srf_adv_p6 green nlib.srf_common green nlib.srf_nurb green nlib.srf_offset green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_n_lib_p1 green nurbs.nurbs_crv green
Soft dependents: curve.ellipse_p1 green nlib.crv_fit_p1 green nlib.spiral green nlib.srf_tool_p1 green nurbs.b_spline_curve_p2 green nurbs.b_spline_surface_n_lib_p2 partial primitive.primitive_creation_p1 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
N_CrvIs3d | NL_CrvBasic.cpp:38 | 23 | [Curve::is_3d] |
N_CrvWeightsAreValid | NL_CrvBasic.cpp:183 | 30 | [Curve::weights_are_valid] |
N_CrvIsSized | NL_CrvBasic.cpp:432 | 20 | [Curve::is_sized] |
N_CrvFromCPolygonAndKnotVector | NL_CrvBasic.cpp:1335 | 6 | [Curve::new], [Curve::with_indices] |
N_CrvSizeArrays | NL_CrvBasic.cpp:1593 | 33 | [size_arrays] |
N_CrvDetachPolygonKnot | NL_CrvBasic.cpp:1741 | 6 | the accessors above |
N_CrvGetCPtsDegreeAndKnots | NL_CrvBasic.cpp:1783 | 26 | the accessors above |
N_CrvGetArraySizes | NL_CrvBasic.cpp:1836 | 5 | [Curve::n], [Curve::m], [Curve::array_sizes] |
N_CrvGetConicData | NL_CrvBasic.cpp:1863 | 58 | [conic_data], [ConicType], [ConicData] |
N_CrvGetCPts | NL_CrvBasic.cpp:1950 | 8 | [Curve::cpts], [Curve::cpts_mut] |
N_CrvGetCPtsAndKnots | NL_CrvBasic.cpp:1988 | 8 | the accessors above |
N_CrvGetCPtsKnotVectorAndKnots | NL_CrvBasic.cpp:2028 | 6 | the accessors above |
N_CrvSetCPtsAndKnots | NL_CrvBasic.cpp:2063 | 5 | [Curve::set_cpts_and_knots] |
N_CrvGetKnots | NL_CrvBasic.cpp:2097 | 5 | [Curve::knots] |
N_CrvGetParamBounds | NL_CrvBasic.cpp:2131 | 8 | [Curve::param_bounds] |
N_CrvGetKnotVector | NL_CrvBasic.cpp:2166 | 4 | [Curve::knot_vector] |
N_CrvGetDegree | NL_CrvBasic.cpp:2195 | 4 | [Curve::degree] |
N_CrvCompress | NL_CrvBasic.cpp:2235 | 42 | [Curve::compress] |
N_CrvSetSizeIndices | NL_CrvBasic.cpp:2437 | 6 | [Curve::set_size_indices] |
N_CrvInitArrays | NL_CrvBasic.cpp:2472 | 6 | None / Option::is_none on Option<Curve> |
N_CrvAreArraysNULL | NL_CrvBasic.cpp:2506 | 21 | None / Option::is_none on Option<Curve> |
N_IsCrvRat | NL_CrvBasic.cpp:2554 | 25 | [Curve::is_rational] |
N_CrvIsClosed | NL_CrvBasic.cpp:2605 | 29 | [Curve::is_closed], [Curve::is_closed_tol] |
N_CrvIsDegen | NL_CrvBasic.cpp:2660 | 45 | [Curve::is_degen], [Curve::is_degen_tol] |
N_CrvIsLine | NL_CrvBasic.cpp:2736 | 75 | [Curve::is_line] |
N_CrvsAreCoincident | NL_CrvBasic.cpp:2843 | 55 | [curves_are_coincident] |
N_CrvsAreEqual | NL_CrvBasic.cpp:2935 | 61 | [Curve::equals] |
N_CrvsAreCombatible | NL_CrvBasic.cpp:3029 | 112 | [curves_are_compatible] |
N_CrvCopy | NL_CrvBasic.cpp:3178 | 39 | [Curve::copy_into], Clone |
N_CrvGetNumAndDenom | NL_CrvBasic.cpp:3256 | 63 | [Curve::num_and_denom] |
N_CreateCrvFromNumAndDenom | NL_CrvBasic.cpp:3493 | 58 | [curve_from_num_and_denom] |
N_CrvGetDenomCrvFunc | NL_CrvBasic.cpp:4430 | 41 | [Curve::denom_func] |
N_CrvGetEPolygon | NL_CrvBasic.cpp:4514 | 42 | [Curve::epolygon] |
N_Crv3dTo2d | NL_CrvBasic.cpp:4717 | 17 | [Curve::to_2d], [Curve::to_3d] |
N_Crv2dTo3d | NL_CrvBasic.cpp:4765 | 17 | [Curve::to_2d], [Curve::to_3d] |
N_CrvRatToNonRat | NL_CrvBasic.cpp:4813 | 17 | [Curve::rat_to_non_rat], [Curve::non_rat_to_rat] |
N_CrvNonRatToRat | NL_CrvBasic.cpp:4860 | 17 | [Curve::rat_to_non_rat], [Curve::non_rat_to_rat] |
N_CrvsMakeRatCompatible | NL_CrvBasic.cpp:4910 | 61 | [make_rat_compatible] |
N_CrvReparamToInterval | NL_CrvBasic.cpp:5005 | 31 | [Curve::reparam_to_interval] |
N_CrvAreWeightsEqual | NL_CrvBasic.cpp:5063 | 39 | [Curve::are_weights_equal] |
N_CrvMakeNonRat | NL_CrvBasic.cpp:5128 | 17 | [Curve::make_non_rat] |
N_CrvPruneRat | NL_CrvBasic.cpp:5176 | 14 | [Curve::prune_rat] |
N_Crv4dIsDegen | NL_CrvBasic.cpp:5217 | 40 | [Curve::is_4d_degen] |
N_CrvIsInZ0Plane | NL_CrvBasic.cpp:5284 | 36 | [Curve::is_in_z0_plane] |
N_CrvIsPlanar | NL_CrvBasic.cpp:5364 | 139 | [Curve::is_planar], [Planarity] |
N_CrossBoundDerivCrvNonRatSrf | NL_SrfSymbol.cpp:4165 | 122 | [cross_bound_deriv_crv_non_rat_srf], [Boundary] |
Module file-header table (41 rows)
| Rust | Upstream |
|---|---|
[Curve] | NL_CURVE (with its NL_CPOLYGON and NL_KNOTVECTOR) |
[Curve::new], [Curve::with_indices] | N_CrvFromCPolygonAndKnotVector |
[Curve::n], [Curve::m], [Curve::array_sizes] | N_CrvGetArraySizes |
[Curve::degree] | N_CrvGetDegree |
[Curve::cpts], [Curve::cpts_mut] | N_CrvGetCPts |
[Curve::knots] | N_CrvGetKnots |
[Curve::knot_vector] | N_CrvGetKnotVector |
| the accessors above | N_CrvGetCPtsDegreeAndKnots, N_CrvGetCPtsAndKnots, N_CrvGetCPtsKnotVectorAndKnots, N_CrvDetachPolygonKnot |
[Curve::set_cpts_and_knots] | N_CrvSetCPtsAndKnots |
[Curve::param_bounds] | N_CrvGetParamBounds |
[Curve::set_size_indices] | N_CrvSetSizeIndices |
[Curve::compress] | N_CrvCompress |
None / Option::is_none on Option<Curve> | N_CrvInitArrays / N_CrvAreArraysNULL |
[size_arrays] | N_CrvSizeArrays |
[Curve::copy_into], Clone | N_CrvCopy |
[Curve::is_3d] | N_CrvIs3d |
[Curve::weights_are_valid] | N_CrvWeightsAreValid |
[Curve::is_sized] | N_CrvIsSized |
[Curve::is_rational] | N_IsCrvRat |
[Curve::is_closed], [Curve::is_closed_tol] | N_CrvIsClosed |
[Curve::is_degen], [Curve::is_degen_tol] | N_CrvIsDegen |
[Curve::is_line] | N_CrvIsLine |
[curves_are_coincident] | N_CrvsAreCoincident |
[Curve::equals] | N_CrvsAreEqual |
[curves_are_compatible] | N_CrvsAreCombatible |
[Curve::num_and_denom] | N_CrvGetNumAndDenom |
[curve_from_num_and_denom] | N_CreateCrvFromNumAndDenom |
[Curve::denom_func] | N_CrvGetDenomCrvFunc |
[Curve::epolygon] | N_CrvGetEPolygon |
[Curve::to_2d], [Curve::to_3d] | N_Crv3dTo2d, N_Crv2dTo3d |
[Curve::rat_to_non_rat], [Curve::non_rat_to_rat] | N_CrvRatToNonRat, N_CrvNonRatToRat |
[make_rat_compatible] | N_CrvsMakeRatCompatible |
[Curve::reparam_to_interval] | N_CrvReparamToInterval |
[Curve::are_weights_equal] | N_CrvAreWeightsEqual |
[Curve::make_non_rat] | N_CrvMakeNonRat |
[Curve::prune_rat] | N_CrvPruneRat |
[Curve::is_4d_degen] | N_Crv4dIsDegen |
[Curve::is_in_z0_plane] | N_CrvIsInZ0Plane |
[Curve::is_planar], [Planarity] | N_CrvIsPlanar |
[conic_data], [ConicType], [ConicData] | N_CrvGetConicData, NL_QUADRATIC / NL_QUARTIC / NL_QUINTIC |
[cross_bound_deriv_crv_non_rat_srf], [Boundary] | N_CrossBoundDerivCrvNonRatSrf, NL_LEFT / NL_RIGHT / NL_BOTTOM / NL_TOP |
Upstream tests reaching this unit
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, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon