/** * Turning the pure `GuardBox` data from `baluster-guard.ts` into Three.js * geometry with metre-scale UVs (E-009): 1 UV unit = 1 m on every face, so a * finish tiles the same on a rail, a newel and a picket. Both the per-flight * guard (`renderer.tsx`) and the continuous guard (`continuous-railings.tsx`) * build their boxes through here, so there is one UV convention to maintain. */ import * as THREE from 'three'; import type { GuardBox } from './guard-path.js'; /** A box whose UVs run in metres (1 unit = 1 m) on each face. */ export declare function metricBox(length: number, height: number, depth: number): THREE.BoxGeometry; /** A round guard member (a cable or its sleeve) as a metre-UV cylinder laid * along its direction: `size[0]` is the diameter, `size[2]` the length. UVs run * in metres — the circumference across, the length along — so a finish tiles * the same as on a rectangular bar. */ export declare function metricCylinder(diameter: number, length: number): THREE.CylinderGeometry; /** One oriented guard box as a metre-UV geometry, z laid along its direction. */ export declare function guardBoxGeometry(box: GuardBox): THREE.BoxGeometry | THREE.CylinderGeometry; /** Merge a guard's boxes into one metre-UV geometry, or null when empty. */ export declare function mergeGuardBoxes(boxes: GuardBox[]): THREE.BufferGeometry | null; //# sourceMappingURL=baluster-geometry.d.ts.map