solidcore

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 functionDefined atLinesRust (from the file header)
N_CrvIs3dNL_CrvBasic.cpp:3823[Curve::is_3d]
N_CrvWeightsAreValidNL_CrvBasic.cpp:18330[Curve::weights_are_valid]
N_CrvIsSizedNL_CrvBasic.cpp:43220[Curve::is_sized]
N_CrvFromCPolygonAndKnotVectorNL_CrvBasic.cpp:13356[Curve::new], [Curve::with_indices]
N_CrvSizeArraysNL_CrvBasic.cpp:159333[size_arrays]
N_CrvDetachPolygonKnotNL_CrvBasic.cpp:17416the accessors above
N_CrvGetCPtsDegreeAndKnotsNL_CrvBasic.cpp:178326the accessors above
N_CrvGetArraySizesNL_CrvBasic.cpp:18365[Curve::n], [Curve::m], [Curve::array_sizes]
N_CrvGetConicDataNL_CrvBasic.cpp:186358[conic_data], [ConicType], [ConicData]
N_CrvGetCPtsNL_CrvBasic.cpp:19508[Curve::cpts], [Curve::cpts_mut]
N_CrvGetCPtsAndKnotsNL_CrvBasic.cpp:19888the accessors above
N_CrvGetCPtsKnotVectorAndKnotsNL_CrvBasic.cpp:20286the accessors above
N_CrvSetCPtsAndKnotsNL_CrvBasic.cpp:20635[Curve::set_cpts_and_knots]
N_CrvGetKnotsNL_CrvBasic.cpp:20975[Curve::knots]
N_CrvGetParamBoundsNL_CrvBasic.cpp:21318[Curve::param_bounds]
N_CrvGetKnotVectorNL_CrvBasic.cpp:21664[Curve::knot_vector]
N_CrvGetDegreeNL_CrvBasic.cpp:21954[Curve::degree]
N_CrvCompressNL_CrvBasic.cpp:223542[Curve::compress]
N_CrvSetSizeIndicesNL_CrvBasic.cpp:24376[Curve::set_size_indices]
N_CrvInitArraysNL_CrvBasic.cpp:24726None / Option::is_none on Option<Curve>
N_CrvAreArraysNULLNL_CrvBasic.cpp:250621None / Option::is_none on Option<Curve>
N_IsCrvRatNL_CrvBasic.cpp:255425[Curve::is_rational]
N_CrvIsClosedNL_CrvBasic.cpp:260529[Curve::is_closed], [Curve::is_closed_tol]
N_CrvIsDegenNL_CrvBasic.cpp:266045[Curve::is_degen], [Curve::is_degen_tol]
N_CrvIsLineNL_CrvBasic.cpp:273675[Curve::is_line]
N_CrvsAreCoincidentNL_CrvBasic.cpp:284355[curves_are_coincident]
N_CrvsAreEqualNL_CrvBasic.cpp:293561[Curve::equals]
N_CrvsAreCombatibleNL_CrvBasic.cpp:3029112[curves_are_compatible]
N_CrvCopyNL_CrvBasic.cpp:317839[Curve::copy_into], Clone
N_CrvGetNumAndDenomNL_CrvBasic.cpp:325663[Curve::num_and_denom]
N_CreateCrvFromNumAndDenomNL_CrvBasic.cpp:349358[curve_from_num_and_denom]
N_CrvGetDenomCrvFuncNL_CrvBasic.cpp:443041[Curve::denom_func]
N_CrvGetEPolygonNL_CrvBasic.cpp:451442[Curve::epolygon]
N_Crv3dTo2dNL_CrvBasic.cpp:471717[Curve::to_2d], [Curve::to_3d]
N_Crv2dTo3dNL_CrvBasic.cpp:476517[Curve::to_2d], [Curve::to_3d]
N_CrvRatToNonRatNL_CrvBasic.cpp:481317[Curve::rat_to_non_rat], [Curve::non_rat_to_rat]
N_CrvNonRatToRatNL_CrvBasic.cpp:486017[Curve::rat_to_non_rat], [Curve::non_rat_to_rat]
N_CrvsMakeRatCompatibleNL_CrvBasic.cpp:491061[make_rat_compatible]
N_CrvReparamToIntervalNL_CrvBasic.cpp:500531[Curve::reparam_to_interval]
N_CrvAreWeightsEqualNL_CrvBasic.cpp:506339[Curve::are_weights_equal]
N_CrvMakeNonRatNL_CrvBasic.cpp:512817[Curve::make_non_rat]
N_CrvPruneRatNL_CrvBasic.cpp:517614[Curve::prune_rat]
N_Crv4dIsDegenNL_CrvBasic.cpp:521740[Curve::is_4d_degen]
N_CrvIsInZ0PlaneNL_CrvBasic.cpp:528436[Curve::is_in_z0_plane]
N_CrvIsPlanarNL_CrvBasic.cpp:5364139[Curve::is_planar], [Planarity]
N_CrossBoundDerivCrvNonRatSrfNL_SrfSymbol.cpp:4165122[cross_bound_deriv_crv_non_rat_srf], [Boundary]
Module file-header table (41 rows)
RustUpstream
[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 aboveN_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], CloneN_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