Units / nurbs
nurbs.nurbs_srf green
- Layer
- 11
- Upstream lines
- 1,188
- Functions
- 9
- Rust module
nurbs::nurbs_srf
Source: crates/solidcore/src/nurbs/nurbs_srf.rs
Upstream: source/SMLib/src/SmNurbsSrf.cpp
Notes
9 fns; largest: sm_ComputeNetConstants, sm_ComputeSurfConstants, sm_DecomposeSrf, sm_SplitSrf; cycle back-edges (call into later units; stub or co-port): surface.surface_p2(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; GREEN: difftest 3092 cases (92 fixture from Surface.sms / offset_nurb.sms / DropCurveSurface.sms, SM_API_test rectangle/polygon planes and edge cases + 3000 generated), all bit-identical (max_rel_err 0), 0 deferred; 30,092-case run clean; --perturb SENSITIVE. The surface_p2 back-edge (SmSurface::EvaluatePoint) is an evaluator closure, so nothing is deferred; no UNPORTED(nurbs.nurbs_srf) stubs existed to wire
Difftest
- Cases
- 3,092
- Passed
- 3,092
- 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: geom.extent3d green geom.vector3d green nlib.knots green
Soft dependencies: geom.extent1d green geom.extent2d green geom.geom_utility_p1 green geom.tol green nlib.math green nlib.srf_basic green nlib.srf_nurb green nlib.srf_tool_p1 green
Dependents: surface.surface_cache_p2 partial surface.surface_cache_p3 partial
Soft dependents: nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
sm_ComputeNetConstants | SmNurbsSrf.cpp:384 | 425 | [compute_net_constants] |
sm_ComputeSurfConstants | SmNurbsSrf.cpp:824 | 259 | [compute_surf_constants] |
sm_ComputeNurbSurfaceSize | SmNurbsSrf.cpp:1137 | 31 | (none: Rust owns memory) |
sm_InitNurbSurfaceMemory | SmNurbsSrf.cpp:1185 | 36 | [allocate_nurb_surface] |
sm_AllocateNurbSurface | SmNurbsSrf.cpp:1270 | 30 | [allocate_nurb_surface] |
sm_AllocateAndCopyNurbSurface | SmNurbsSrf.cpp:1310 | 39 | [copy_nurb_surface] |
sm_DecomposeSrf | SmNurbsSrf.cpp:1524 | 251 | [decompose_srf] |
sm_SplitSrf | SmNurbsSrf.cpp:1817 | 94 | [split_srf] |
sm_IsNSrfDegenerate | SmNurbsSrf.cpp:1917 | 23 | [is_nsrf_degenerate] |
Module file-header table (9 rows)
| Rust | Upstream |
|---|---|
[compute_net_constants] | sm_ComputeNetConstants |
[compute_surf_constants] | sm_ComputeSurfConstants |
[ConstantsRequest], [NetConstants] | the optional double* outputs of both |
[allocate_nurb_surface] | sm_AllocateNurbSurface, sm_InitNurbSurfaceMemory |
[copy_nurb_surface] | sm_AllocateAndCopyNurbSurface |
| (none: Rust owns memory) | sm_ComputeNurbSurfaceSize(n, m, r, s) |
[decompose_srf] | sm_DecomposeSrf |
[split_srf] | sm_SplitSrf |
[is_nsrf_degenerate] | sm_IsNSrfDegenerate |
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