import type { DossierCameraPreset, DossierThumbnailStrategy, DossierVector3, } from './types'; const add = (origin: DossierVector3, dx: number, dy: number, dz: number): DossierVector3 => [ origin[0] + dx, origin[1] + dy, origin[2] + dz, ]; export const makeCameraPresets = ( radius: number, target: DossierVector3, detail: Pick, ): readonly DossierCameraPreset[] => [ { id: 'front', label: 'Front', position: add(target, 0, radius * 0.18, radius), target, description: 'Orthographic-feeling front reference angle for identifying the major assemblies.', lensMm: 55, }, { id: 'back', label: 'Back', position: add(target, 0, radius * 0.18, -radius), target, description: 'Rear reference angle for output shafts, exhaust paths, and hidden service details.', lensMm: 55, }, { id: 'left', label: 'Left', position: add(target, -radius, radius * 0.2, 0), target, description: 'Left-side engineering elevation for examining longitudinal relationships.', lensMm: 55, }, { id: 'right', label: 'Right', position: add(target, radius, radius * 0.2, 0), target, description: 'Right-side engineering elevation for examining ports, drive paths, and linkages.', lensMm: 55, }, { id: 'top', label: 'Top', position: add(target, 0, radius, radius * 0.02), target, description: 'Top-down layout view for tracing flow paths and component symmetry.', lensMm: 65, }, { id: 'isometric', label: 'Isometric', position: add(target, radius * 0.82, radius * 0.58, radius * 0.82), target, description: 'Premium catalogue view used for thumbnails, tours, and reset state.', lensMm: 45, }, { ...detail, lensMm: 70, }, ]; export const makeThumbnailStrategy = ( primarySilhouette: readonly string[], accentParts: readonly string[], renderNotes: string, backgroundMotif = 'dark blueprint grid, radial accent glow, subtle ambient-occlusion contact shadow', ): DossierThumbnailStrategy => ({ cameraPresetId: 'isometric', primarySilhouette, accentParts, backgroundMotif, renderNotes, });