export const anglePresets: Record< string, { horizontalAngle: number; verticalAngle: number; zoom: number; prompt?: string } > = { 自定义: { horizontalAngle: 0, verticalAngle: 0, zoom: 50 }, 鱼眼视角: { horizontalAngle: 0, verticalAngle: 0, zoom: 20, prompt: "保持主体身份与场景,以鱼眼超广角镜头重新构图,明显桶形畸变", }, 倾斜视角: { horizontalAngle: 30, verticalAngle: 0, zoom: 50, prompt: "保持主体身份与场景,以荷兰角镜头拍摄,画面地平线倾斜 25 度", }, 正面俯拍: { horizontalAngle: 0, verticalAngle: 45, zoom: 50 }, 正面仰拍: { horizontalAngle: 0, verticalAngle: -30, zoom: 50 }, 全景俯拍: { horizontalAngle: 0, verticalAngle: 90, zoom: 0 }, 背面视角: { horizontalAngle: 180, verticalAngle: 0, zoom: 50 }, }; export function angleRequestParameters(settings: { horizontalAngle: number; verticalAngle: number; zoom: number; }) { if (![settings.horizontalAngle, settings.verticalAngle, settings.zoom].every(Number.isFinite)) throw Error("视角参数必须是有限数值"); return { horizontalAngle: ((settings.horizontalAngle % 360) + 360) % 360, verticalAngle: Math.max(-30, Math.min(90, settings.verticalAngle)), zoom: Math.max(0, Math.min(10, settings.zoom / 10)), }; }