Spaces:
Sleeping
Sleeping
|
Download skill/reference/physics-animation.md from cpuai/ahp-development-workstation: direct link, hf CLI and curl.
- Browser
- Download file 4.3 kB
-
https://huggingface.co/spaces/cpuai/ahp-development-workstation/resolve/main/skill/reference/physics-animation.md
- Command line
-
hf download hf://spaces/cpuai/ahp-development-workstation/skill/reference/physics-animation.md
-
curl -L -o physics-animation.md https://huggingface.co/spaces/cpuai/ahp-development-workstation/resolve/main/skill/reference/physics-animation.md
4.3 kB
更多、更逼真的物理动画:写法与检查清单
原则
- 公式驱动,不是手绘循环:位置、角度、面积、时长全部由物理公式对时间 t 实时计算,画面上显示实时读数(日期、距离、高度角、小时数)。
- 纯函数、seek-safe:
draw(t)只依赖 t;不要在帧间累积变量(粒子用种子随机数mulberry32+ 解析式运动)。 - 按真实比例,除非必须示意:不能按比例时(如日地大小、轨道椭圆夸大)必须在画面上写"示意"。条形图必须从 0 起量。
- 一个画面只讲一件事,用 cue 让关键元素恰好在旁白说出对应词时出现/高亮。
- 每个场景的"视觉真值"(
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 远)时,用相同比例尺和相同位置布局,高亮正在被讲到的一侧。
本地原型方法(云端容器)
- 用
test/frames.html载入 earth_data/core/scenes + 模拟CFG(场景时长与线索为估算值,可由台词字数 ÷ 6.7 估计)。 - playwright + Chromium(
/opt/pw-browsers/chromium)对SEASONS.draw(t)出 PNG;test/mont.py拼接成联系图。 - gsap 在云端装不上时用 stub,仅用于视觉测试;开发机用真实 node_modules。
- 真 TTS 后线索时间会变,注意
fixKeys保护并在开发机用 snapshots 复核。
质量检查清单
- 数字与 claims/visual_truth 一致(距离、角度、时长、日期)
- 图上标注:示意 / 按真实比例
- 条形图从 0 起量
- 两半球/两季节对照使用同一画法
- 动画事件与旁白词对齐(cue)
- 无元素遮挡标题、字幕、页脚
- 无
ERR scene:红字(draw 里捕获异常时会画红色错误提示)