Units / surface
surface.b_spline_volume_n_lib partial
- Layer
- 24
- Upstream lines
- 310
- Functions
- 3
- Rust module
surface::b_spline_volume_n_lib
Source: crates/solidcore/src/surface/b_spline_volume_n_lib.rs
Upstream: source/SMLib/src/SmBSplineVolumeNLib.cpp
Notes
UPDATE after curve.curve_p9 (PR #13): CalculateTightBoundingBox and IsOnPositiveSideOfPlanes wired; difftest 2420 cases, 2407 pass bit-identical, 0 failed, 13 deferred (intersect.curve_class_p4 13; the 550 curve.curve_p9 deferrals are gone), --perturb SENSITIVE 2407/2407. Counts below are from before. 3 fns; largest: SmBSplineVolume::CalculateContinuitiesSimple, SmBSplineVolume::IsCurveInParamDomainSimple, SmBSplineVolume::HasDiscontinuitiesSimple; only 0 of 310 lines survive RTA (reached via virtual dispatch to classes no in-scope entry point constructs); low priority / likely deferrable; 317 upstream test entry points reach this unit; PARTIAL: difftest 2420 cases (420 fixture: unit cube, cubic/quintic with interior multiplicities, degree 0, single distinct knot, unclamped, near-coincident knots, tiny 1e-9 and huge 1e7 domains, oriented + compounded volumes; all 9 SmVolumeParamType codes, representational and geometric continuities, HasDiscontinuitiesSimple with/without output, IsCurveInParamDomainSimple / IsCurveInParamDomain / IsCurveInInSpaceDomain on real SmLine, SmBSplineCurve, SmEllipse, SmHermiteCurve inside, outside, crossing, on a face and within SM_EFF_ZERO of it + 2000 generated), 1870 passed bit-identical (max_rel_err 0), 0 failed, 550 deferred: curve.curve_p9 550 (after merging surface.unbend_volume PR #20, whose SmVolume::EvaluatePoint co-port runs the 71 cases formerly deferred on surface.volume_p2: 58 now pass, 13 now reach curve.curve_p9; per-symbol counts before that: SmCurve::CalculateTightBoundingBox 434, SmCurve::IsOnPositiveSideOfPlanes 103); --perturb SENSITIVE. Without USE_VOLUMES the geometric continuity path always fails at EvaluateIsoParametricCurveSimple, so HasDiscontinuitiesSimple(geometric) reports none (findings.md, upstream-issues WR-48, WR-49, UB-73). Wired the surface.volume_p1 SmBSplineVolume stubs (Volume::has_discontinuities_simple gains bCalcGeometric, new Volume::calculate_continuities_simple, IsCurveIn*/IsLineInParamDomain take &Kernel); surface.volume_p1, surface.twist_volume, surface.b_spline_volume, curve.crv_in_volume, geom.transform difftests unchanged
Difftest
- Cases
- 2,420
- Passed
- 2,407
- Deferred
- 13
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.curve_class_p4 claimed | 13 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent3d green geom.object partial geom.pseudo_box green surface.b_spline_volume green surface.volume_p1 green
Soft dependencies: curve.curve_p4 partial curve.curve_p6 green curve.curve_p9 green geom.vector3d green
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmBSplineVolume::HasDiscontinuitiesSimple | SmBSplineVolumeNLib.cpp:226 | 30 | [BSplineVolume::has_discontinuities_simple] |
SmBSplineVolume::IsCurveInParamDomainSimple | SmBSplineVolumeNLib.cpp:266 | 39 | [BSplineVolume::is_curve_in_param_domain_simple] |
SmBSplineVolume::CalculateContinuitiesSimple | SmBSplineVolumeNLib.cpp:456 | 241 | [BSplineVolume::calculate_continuities_simple] |
Module file-header table (3 rows)
| Rust | Upstream |
|---|---|
[BSplineVolume::calculate_continuities_simple] | SmBSplineVolume::CalculateContinuitiesSimple |
[BSplineVolume::has_discontinuities_simple] | SmBSplineVolume::HasDiscontinuitiesSimple |
[BSplineVolume::is_curve_in_param_domain_simple] | SmBSplineVolume::IsCurveInParamDomainSimple |
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