Units / surface
surface.b_spline_volume green
- Layer
- 16
- Upstream lines
- 1,226
- Functions
- 23
- Rust module
surface::b_spline_volume
Source: crates/solidcore/src/surface/b_spline_volume.rs
Upstream: source/SMLib/inc/SmBSplineVolume.h, source/SMLib/src/SmBSplineVolume.cpp
Notes
23 fns; largest: SmBSplineVolume::EvaluateSimple, SmBSplineVolume::ReadFromDB, SmBSplineVolume::EvaluateIsoParametricCurveSimple, SmBSplineVolume::EvaluateBoundingBoxSimple; unit-SCC #22 (220 units); only 201 of 1226 lines survive RTA (reached via virtual dispatch to classes no in-scope entry point constructs); low priority / likely deferrable; 319 upstream test entry points reach this unit; GREEN: difftest 2333 cases (333 fixture: unit cube, rational Bezier, knots needing fixup, coincident control points, degree 0, unclamped, closest-point ties, oriented + compounded volumes over info/copy/equal/eval/bbox/iso/guess/transform/predicate ops + 2000 generated), all bit-identical (max_rel_err 0), 0 deferred; 30,333-case run clean; --perturb SENSITIVE. Upstream builds without USE_VOLUMES: EvaluateSimple, EvaluateIsoParametricCurveSimple, ReadFromDB, sm_LoadNLibTransform (so TransformSimple) return SM_ERR and AreEqual_gw_VOLUME is FALSE (findings.md). The SmBSplineVolume UNPORTED stub in surface.volume_p1 now only covers the surface.b_spline_volume_n_lib overrides (HasDiscontinuitiesSimple, IsCurveInParamDomainSimple); no unit deferred on surface.b_spline_volume
Difftest
- Cases
- 2,333
- Passed
- 2,333
- 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.pseudo_box green geom.transform green geom.vector3d green surface.volume_p1 green
Soft dependencies: geom.tol green nlib.math green nlib.spiral green nurbs.nurbs_crv green
Dependents: surface.b_spline_volume_n_lib partial
Soft dependents: surface.volume_p2 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmBSplineVolume::GetGwNurbPointer | SmBSplineVolume.h:298 | 1 | [BSplineVolume::nurb] |
SmBSplineVolume::GetOrCreateGwNurbPointer | SmBSplineVolume.h:299 | 1 | [BSplineVolume::nurb] |
SmBSplineVolume::IsBoundedSimple | SmBSplineVolume.h:659 | 1 | [BSplineVolume::is_bounded_simple] |
SmBSplineVolume::GetClassString | SmBSplineVolume.h:742 | 1 | Volume::type_code, type_string, class_string, is_kind_of |
SmBSplineVolume::GetType | SmBSplineVolume.h:742 | 1 | Volume::type_code, type_string, class_string, is_kind_of |
SmBSplineVolume::GetTypeString | SmBSplineVolume.h:742 | 1 | Volume::type_code, type_string, class_string, is_kind_of |
smGet_gw_VOLUME | SmBSplineVolume.cpp:30 | 6 | [BSplineVolume::nurb] |
AreEqual_gw_VOLUME | SmBSplineVolume.cpp:42 | 16 | [are_equal_nurb_volumes] |
sm_LoadNLibTransform | SmBSplineVolume.cpp:66 | 35 | [load_nlib_transform] |
SmBSplineVolume::SmBSplineVolume | SmBSplineVolume.cpp:295 | 54 | [BSplineVolume] |
SmBSplineVolume::~SmBSplineVolume | SmBSplineVolume.cpp:355 | 12 | Drop (implicit) |
SmBSplineVolume::operator== | SmBSplineVolume.cpp:374 | 26 | [BSplineVolume::approx_eq], Volume::approx_eq |
SmBSplineVolume::Copy | SmBSplineVolume.cpp:437 | 12 | [BSplineVolume::copy], Volume::copy |
SmBSplineVolume::GetDegree | SmBSplineVolume.cpp:810 | 21 | [BSplineVolume::degree] |
SmBSplineVolume::GetNaturalParamDomain | SmBSplineVolume.cpp:859 | 22 | [BSplineVolume::natural_param_domain] |
SmBSplineVolume::GetKnots | SmBSplineVolume.cpp:914 | 23 | [BSplineVolume::knots] |
SmBSplineVolume::EvaluateSimple | SmBSplineVolume.cpp:1747 | 444 | [BSplineVolume::evaluate_simple] |
SmBSplineVolume::EvaluateBoundingBoxSimple | SmBSplineVolume.cpp:2221 | 128 | [BSplineVolume::evaluate_bounding_box_simple] |
SmBSplineVolume::EvaluateIsoParametricCurveSimple | SmBSplineVolume.cpp:2364 | 134 | [BSplineVolume::evaluate_iso_parametric_curve_simple] |
SmBSplineVolume::InvEvaluateGuessPointSimple | SmBSplineVolume.cpp:2645 | 69 | [BSplineVolume::inv_evaluate_guess_point_simple] |
SmBSplineVolume::TransformSimple | SmBSplineVolume.cpp:3001 | 25 | [BSplineVolume::transform_simple] |
SmBSplineVolume::ReadFromDB | SmBSplineVolume.cpp:3195 | 189 | [BSplineVolume::read_from_db] |
SmBSplineVolume::IsKindOf | SmBSplineVolume.cpp:3475 | 4 | Volume::type_code, type_string, class_string, is_kind_of |
Module file-header table (21 rows)
| Rust | Upstream |
|---|---|
[BSplineVolume] | SmBSplineVolume (members m_pNurb, m_bOutOfBoundsEnabled) |
[BSplineVolume::new] | SmBSplineVolume(const SmContext*, const gw_VOLUME*), SmBSplineVolume(gw_VOLUME*, FALSE, ctx) |
[BSplineVolume::copy], Volume::copy | SmBSplineVolume(const SmBSplineVolume&, SmBoolean), Copy |
Drop (implicit) | ~SmBSplineVolume |
[BSplineVolume::nurb] | GetGwNurbPointer, GetOrCreateGwNurbPointer, smGet_gw_VOLUME |
[BSplineVolume::out_of_bounds_enabled] | GetOutOfBoundsEnabled |
[are_equal_nurb_volumes] | AreEqual_gw_VOLUME |
[BSplineVolume::approx_eq], Volume::approx_eq | operator== |
[load_nlib_transform] | sm_LoadNLibTransform |
[BSplineVolume::degree] | GetDegree |
[BSplineVolume::natural_param_domain] | GetNaturalParamDomain |
[BSplineVolume::knots] | GetKnots |
[BSplineVolume::evaluate_simple] | EvaluateSimple |
[BSplineVolume::evaluate_bounding_box_simple] | EvaluateBoundingBoxSimple |
[BSplineVolume::evaluate_iso_parametric_curve_simple] | EvaluateIsoParametricCurveSimple |
[BSplineVolume::inv_evaluate_guess_point_simple] | InvEvaluateGuessPointSimple |
[BSplineVolume::is_bounded_simple] | IsBoundedSimple |
[BSplineVolume::transform_simple] | TransformSimple |
[BSplineVolume::read_from_db] | ReadFromDB |
Volume::type_code, type_string, class_string, is_kind_of | GetType, GetTypeString, GetClassString, IsKindOf (SM_COMMON) |
[VolumeParam], [VolumeParams] | SmVolumeParamType, SmVolumeParamsType |
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