Fused output scan: AABB over start+end positions + max finite width,
in ONE pass over the projected arrays — computed here, where the data
is already hot (and, for the nD worker path, OFF the main thread), so
computeLineBounds doesn't re-run its O(N) per-segment scan on the
main thread per commit (see LinesProjectionBounds). Float semantics
match computeLineBounds' fallback scan exactly: Math.min/Math.max
per component (Box3.expandByPoint) and the Number.isFinite width
guard.
Exported for the fused-vs-brute-force unit tests.
Parameters
startPositions: Float32Array
endPositions: Float32Array
startWidths: Float32Array
endWidths: Float32Array
count: number
Visible segment count (must be > 0; callers skip the
scan and omit bounds for empty results)
Fused output scan: AABB over start+end positions + max finite width, in ONE pass over the projected arrays — computed here, where the data is already hot (and, for the nD worker path, OFF the main thread), so
computeLineBoundsdoesn't re-run its O(N) per-segment scan on the main thread per commit (seeLinesProjectionBounds). Float semantics matchcomputeLineBounds' fallback scan exactly:Math.min/Math.maxper component (Box3.expandByPoint) and theNumber.isFinitewidth guard.Exported for the fused-vs-brute-force unit tests.