# Fathom：可直接交给其他 Agent 的复现提示词

独立实现全屏相机穿越照片的效果。素材用 ../../fathom-gallery/assets/01.jpg 到21.jpg，标题说明用本目录captions.json，字体Cyrene来自../../fathom-gallery/assets/cyrene.otf，正文Geist/Geist Mono。不要读取旧JS或iframe；拆分照片池、纯投影模型和事件/渲染层。

中心两行Stories / In Motion用Cyrene大写，字号clamp(1.55rem,5.6vw,5.6rem)、行高.98、字距.04em，z30；浅色背景#f4f2ec，正文#12110f，中心标题#282724；暗色背景#100f0e，文字#f4f2ec。照片直角无边框，shadow 0 30px 60px −30px #000c。底部黑色.72到透明渐变，标题12px，说明8.5px mono、截前46字符。旧HUD、主题控件、说明视觉隐藏但保留功能。鼠标隐藏，44px细圆环中心3px点，margin−22，跟随鼠标，inside时显示。

创建14个活跃照片槽，初始图片i%21，网格i%12，先全部初始化再逐个重生以约束图片唯一。选新图片排除活跃图片和最近2张，无候选则先放宽最近限制、再全量。每次重生随机调用顺序为选图片、选位置、选尺寸。空闲网格中随机取两候选，选择距中心更远者；无空闲随机12格。桌面4列3行，W<760时3列4行。格坐标nx=(col+.5)/cols*2−1，ny=(floor(cell/cols)%rows+.5)/rows*2−1；worldX=nx*W*.64*1.05，worldY=ny*H*.6*1.05。

尺寸候选[[284,284],[300,300],[258,258],[232,320],[214,300],[340,214],[322,202]]，手机乘.64；仅重生时更新尺寸。初始z=−2450+i/14*3210，重生z=−2450；入场entry0→1，.7s back.out(1.4)，overwrite auto。帧dt=min(.05,秒差)，speed=mix(110,560,clamp(abs(z+60)/520))*throttle；z+=speed*dt；超过760重生。

throttle及target初始1；每帧throttle+=(target−throttle)*.06，target+=(1−target)*.004；滚轮target+=deltaY*.0016，限制.15…3.2；pointerdown把target乘1.8再限制。鼠标位置及平滑位置初始屏幕中心，平滑每帧.08追随。perspective1080，origin为[50+(sx/W−.5)*26,50+(sy/H−.5)*26]%。

投影k=1080/(1080−z)，spread=1+.6*(k−1)；若abs(worldY)<.1H，则worldX向外推到至少.28W。最终x=worldX*spread/k+W/2−w/2，y=worldY*spread/k+H/2−h/2；translate3d(x,y,z)位置1位小数，scale(entry)3位。opacity=clamp((z+1420)/500)*(1−clamp((z−500)/260))，3位；zIndex=round(2000+z)。从z<560的照片中取abs(z−120)最小者更新说明，说明opacity0/y12→1/0、.5s power3.out。

圆环transform translate(sx,sy)位置1位、scale(1+(throttle−1)*.3)2位。离开窗口隐藏圆环。销毁时清理事件、rAF、照片及说明tween。

验收1440×1000、390×844：初始化、移动视点、滚轮加速、点击加速穿过重生阈值、主题切换，验证14张活跃图片互异及投影、透明度、透视原点、指针、速度。随机和首帧时间只在测试中固定：LCG seed123456，每次seed=(1664525*seed+1013904223)>>>0并除2^32；首帧时间16ms。当前上述全部状态对照一致，脚本rewrite/scripts/check-fathom.mjs，证据artifacts/rewrite-validation/fathom/。

## 本地图片与中英文（2026-09-21 更新）

本轮已接入本地公开图片和中英双语。复现时同时遵循 [共享规范](../../shared/README.md)：沿用当前本地图片路径，使用共享词典与语言偏好（`zh` / `en`），覆盖动态内容、辅助标签和 Canvas 文字；不要恢复旧的远程图片链接。中文拆字标题应先翻译再拆分，并保持原有动画机制。图片来源与替换映射在共享规范中列出。
