ahp-development-workstation / skill /reference /physics-animation.md
cpuai's picture
Install complete Linux VS Code + AHP MCP development workstation 2026-10-12
c12eb19 verified
|
Raw History Blame Contribute Delete
4.3 kB

更多、更逼真的物理动画:写法与检查清单

原则

  1. 公式驱动,不是手绘循环:位置、角度、面积、时长全部由物理公式对时间 t 实时计算,画面上显示实时读数(日期、距离、高度角、小时数)。
  2. 纯函数、seek-safe:draw(t) 只依赖 t;不要在帧间累积变量(粒子用种子随机数 mulberry32 + 解析式运动)。
  3. 按真实比例,除非必须示意:不能按比例时(如日地大小、轨道椭圆夸大)必须在画面上写"示意"。条形图必须从 0 起量。
  4. 一个画面只讲一件事,用 cue 让关键元素恰好在旁白说出对应词时出现/高亮。
  5. 每个场景的"视觉真值"(visual_truth)写进 story.json,并在 make_diagrams.py 的原理 SVG 里记录公式与数值。

本次用到的物理/天文模型(可直接复用)

  • 开普勒方程:M=2π(d−d_peri)/T;牛顿迭代 E−e·sinE=M;ν=2·atan2(√(1+e)sin(E/2), √(1−e)cos(E/2));r=a(1−e·cosE)。e=0.0167086,近日点约 1 月 3 日,ϖ=282.9°,a=149.598e6 km。
  • 太阳赤纬:sinδ = sinε · sinλ_s,ε=23.44°。春分/夏至/秋分/冬至 ≈ 第 78/171/264/354 天。
  • 太阳高度/方位:sin(alt)=sinφ sinδ + cosφ cosδ cosH;半日弧 cosH0=−tanφ·tanδ;正午高度 = 90° − |φ−δ|。北纬 40°:夏至 73.4°、冬至 26.6°,白昼 ≈14.8 h / 9.2 h。
  • 光斜射:光束宽度固定,照射面积 = 宽度 / sin(高度角);单位面积能量 ∝ sin(高度角);40°N 夏/冬比 ≈ 2.1。
  • 地轴固定指向:地轴在黄道坐标系中恒为 N=(0, sinε, cosε),绕日一周不变;北半球倾向太阳 ⇔ N·S>0。
  • 轨道视图相机:右=+y、朝向观察者 B=(cos a,0,sin a)、上 U=B×R;a≈33°。
  • 按像素 3D 地球(core.js globe):对每个像素求球面法线 → 经纬度 → 双线性采样等距圆柱纹理;Lambert 明暗 + 平滑晨昏线 + 海洋高光 + 云层 + 夜景灯光 + 大气边缘光;小地球 2× 超采样。纹理由手写海岸线多边形 + 种子 3D 值噪声 fbm 程序生成(earth_data.js)。
  • 反事实:把倾角从 23.4° 动画插值到 0°,直射纬度范围随之 ±ε 收缩。

通用物理画法(其他主题)

  • 力学:积分器用解析解或固定步长重算到 t(从 0 循环到 t,步数有限则可接受);显示矢量箭头(力、速度)与实时数值。
  • 光学:射线用 Snell/反射公式逐条计算并画虚线流动动画;光束宽度/面积显示。
  • 波/振动:y=A·sin(kx−ωt) 直接绘制,叠加用求和。
  • 热/扩散:用解析解(高斯核)或预计算网格,在 t 处取值着色。
  • 化学/生物微观:粒子位置 = 种子随机初值 + 解析运动;避免逐帧随机。

版式规则(竖屏 1080×1920)

  • 安全区:标题区 y<460 留给 DOM;字幕在 y≈1540–1700;页脚 y>1740。画布主内容 y 460–1500。
  • 文本芯片 chip():半透明深色底 + 描边,字号 ≥ 24px;关键读数 ≥ 34px。
  • 同屏文字/图形不得互相遮挡:本地原型阶段逐场景出图检查(每场景至少 3 个时间点:开头/线索点/结尾)。
  • 用两个并列对比(夏 vs 冬、近 vs 远)时,用相同比例尺和相同位置布局,高亮正在被讲到的一侧。

本地原型方法(云端容器)

  1. 用 test/frames.html 载入 earth_data/core/scenes + 模拟 CFG(场景时长与线索为估算值,可由台词字数 ÷ 6.7 估计)。
  2. playwright + Chromium(/opt/pw-browsers/chromium)对 SEASONS.draw(t) 出 PNG;test/mont.py 拼接成联系图。
  3. gsap 在云端装不上时用 stub,仅用于视觉测试;开发机用真实 node_modules。
  4. 真 TTS 后线索时间会变,注意 fixKeys 保护并在开发机用 snapshots 复核。

质量检查清单

  • 数字与 claims/visual_truth 一致(距离、角度、时长、日期)
  • 图上标注:示意 / 按真实比例
  • 条形图从 0 起量
  • 两半球/两季节对照使用同一画法
  • 动画事件与旁白词对齐(cue)
  • 无元素遮挡标题、字幕、页脚
  • 无 ERR scene: 红字(draw 里捕获异常时会画红色错误提示)