solidcore

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 unitDeferred cases
intersect.curve_class_p4 claimed13

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 functionDefined atLinesRust (from the file header)
SmBSplineVolume::HasDiscontinuitiesSimpleSmBSplineVolumeNLib.cpp:22630[BSplineVolume::has_discontinuities_simple]
SmBSplineVolume::IsCurveInParamDomainSimpleSmBSplineVolumeNLib.cpp:26639[BSplineVolume::is_curve_in_param_domain_simple]
SmBSplineVolume::CalculateContinuitiesSimpleSmBSplineVolumeNLib.cpp:456241[BSplineVolume::calculate_continuities_simple]
Module file-header table (3 rows)
RustUpstream
[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