solidcore

Units / nurbs

nlib.srf_basic green

Layer
2
Upstream lines
1,088
Functions
35
Rust module
nurbs::srf_basic

Source: crates/solidcore/src/nurbs/srf_basic.rs

Upstream: source/SMLib/src/NL_SrfBasic.cpp, source/SMLib/src/NL_SrfGeom.cpp

Notes

35 fns; largest: N_SrfIsFlatCheap, N_SrfGetAverageLen, N_SrfsAreEqual, N_SrfGetENet; unit-SCC #2 (3 units); 317 upstream test entry points reach this unit; green: 3220 difftest cases (220 fixture + 3000 generated), 0 deferred, bit-identical

Difftest

Cases
3,220
Passed
3,220
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.geom green nlib.math green

Soft dependencies: nlib.knots green

Dependents: nlib.bezier 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_fit green nlib.srf_nurb green nlib.srf_offset green nlib.srf_tool_p1 green nlib.srf_tool_p2 green nlib.srf_tool_p3 green nlib.srf_tool_p4 green nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_p1 green

Soft dependents: nlib.crv_basic green nlib.srf_common green nurbs.b_spline_surface_n_lib_p2 partial nurbs.b_spline_surface_p2 partial nurbs.nurbs_srf green primitive.primitive_creation_p1 claimed surface.offset_surface green surface.plane_p1 partial surface.surf_of_extrusion_p1 green surface.surf_of_revolution_p3 partial surface.surface_cache_p2 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
N_SrfCountsAreValidNL_SrfBasic.cpp:4655[Surface::counts_are_valid]
N_SrfWeightsAreValidNL_SrfBasic.cpp:13239[Surface::weights_are_valid]
N_SrfIsValidNL_SrfBasic.cpp:20743[Surface::is_valid]
N_SrfIsSizedNL_SrfBasic.cpp:28522[Surface::is_sized]
N_SrfFromCNetAndKnotVectorsNL_SrfBasic.cpp:11088[Surface::new], [Surface::with_indices], [SurfaceIndices]
N_SrfGetNetAndKnotVectorsNL_SrfBasic.cpp:14098the accessors above
N_SrfGetCPtsDegreesAndKnotsNL_SrfBasic.cpp:145322the accessors above
N_SrfGetCPtsNL_SrfBasic.cpp:15066[Surface::cpt], [Surface::row], [Surface::rows], [Surface::cpts]
N_SrfGetArraySizesNL_SrfBasic.cpp:15417[Surface::n], [Surface::m], [Surface::array_sizes]
N_SrfGetCPtsAndKnotsNL_SrfBasic.cpp:157910the accessors above
N_SrfGetCPtsKnotVectorAndKnotsNL_SrfBasic.cpp:16208the accessors above
N_SrfSetCPtsAndKnotsNL_SrfBasic.cpp:16596[Surface::set_cpts_and_knots]
N_SrfGetKnotsNL_SrfBasic.cpp:16957[Surface::u_knots], [Surface::v_knots]
N_SrfGetParameterBoundsNL_SrfBasic.cpp:17337[Surface::parameter_bounds]
N_SrfGetKnotVectorsNL_SrfBasic.cpp:17685[Surface::knot_vectors]
N_SrfGetDegreesNL_SrfBasic.cpp:18015[Surface::p], [Surface::q], [Surface::degrees]
N_SrfCompressNL_SrfBasic.cpp:184262[Surface::compress]
N_SrfSetSizeIndicesNL_SrfBasic.cpp:19839[Surface::set_size_indices]
N_SwapUVNL_SrfBasic.cpp:202545[Surface::swap_uv]
N_SrfInitArraysNL_SrfBasic.cpp:21008None / Option::is_none on Option<Surface>
N_SrfAreArraysNULLNL_SrfBasic.cpp:213723None / Option::is_none on Option<Surface>
N_IsSrfRatNL_SrfBasic.cpp:218825[Surface::is_rational]
N_SrfIsClosedNL_SrfBasic.cpp:232357[Surface::is_closed], [Surface::is_closed_tol]
N_SrfsAreEqualNL_SrfBasic.cpp:275175[Surface::equals]
N_SrfSizeArraysNL_SrfBasic.cpp:360146[size_arrays]
N_SrfCopyNL_SrfBasic.cpp:368445[Surface::copy_into], Clone
N_SrfGetENetNL_SrfBasic.cpp:469768[Surface::enet]
N_SrfNonRatToRatNL_SrfBasic.cpp:497121[Surface::non_rat_to_rat]
N_MakeSrfsRatCompatibleNL_SrfBasic.cpp:502633[make_rat_compatible]
N_SrfReparamToIntervalNL_SrfBasic.cpp:509553[Surface::reparam_to_interval]
N_SrfAreWeightsEqualNL_SrfBasic.cpp:547943[Surface::are_weights_equal]
N_SrfMakeNonRatNL_SrfBasic.cpp:554821[Surface::make_non_rat]
N_SrfPruneRatNL_SrfBasic.cpp:55958[Surface::prune_rat]
N_SrfIsFlatCheapNL_SrfBasic.cpp:5646103[Surface::is_flat_cheap], [Flatness]
N_SrfGetAverageLenNL_SrfGeom.cpp:131685[Surface::average_len], [AverageLen]
Module file-header table (34 rows)
RustUpstream
[Surface]NL_SURFACE (with its NL_CNET and NL_KNOTVECTORs)
[Surface::new], [Surface::with_indices], [SurfaceIndices]N_SrfFromCNetAndKnotVectors
[Surface::n], [Surface::m], [Surface::array_sizes]N_SrfGetArraySizes
[Surface::p], [Surface::q], [Surface::degrees]N_SrfGetDegrees
[Surface::cpt], [Surface::row], [Surface::rows], [Surface::cpts]N_SrfGetCPts
[Surface::u_knots], [Surface::v_knots]N_SrfGetKnots
[Surface::knot_vectors]N_SrfGetKnotVectors
the accessors aboveN_SrfGetNetAndKnotVectors, N_SrfGetCPtsDegreesAndKnots, N_SrfGetCPtsAndKnots, N_SrfGetCPtsKnotVectorAndKnots
[Surface::set_cpts_and_knots]N_SrfSetCPtsAndKnots
[Surface::parameter_bounds]N_SrfGetParameterBounds
[Surface::set_size_indices]N_SrfSetSizeIndices
[Surface::compress]N_SrfCompress
[Surface::swap_uv]N_SwapUV
None / Option::is_none on Option<Surface>N_SrfInitArrays / N_SrfAreArraysNULL
[size_arrays]N_SrfSizeArrays
[Surface::copy_into], CloneN_SrfCopy
[Surface::counts_are_valid]N_SrfCountsAreValid
[Surface::weights_are_valid]N_SrfWeightsAreValid
[Surface::is_valid]N_SrfIsValid
[Surface::is_sized]N_SrfIsSized
[Surface::is_rational]N_IsSrfRat
[Surface::is_closed], [Surface::is_closed_tol]N_SrfIsClosed
[Surface::equals]N_SrfsAreEqual
[Surface::enet]N_SrfGetENet
[Surface::non_rat_to_rat]N_SrfNonRatToRat
[make_rat_compatible]N_MakeSrfsRatCompatible
[Surface::reparam_to_interval]N_SrfReparamToInterval
[Surface::are_weights_equal]N_SrfAreWeightsEqual
[Surface::make_non_rat]N_SrfMakeNonRat
[Surface::prune_rat]N_SrfPruneRat
[Surface::is_flat_cheap], [Flatness]N_SrfIsFlatCheap
[Surface::average_len], [AverageLen]N_SrfGetAverageLen
[Direction]NL_UDIR / NL_VDIR / NL_UVDIR
[WEIGHT_MIN], [WEIGHT_MAX], [WEIGHT_TOL]NL_WMIN, NL_WMAX, NL_WTOL

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