文档
受力与动画
让展示内容来自同一份物理解,而不是独立的静态标注。
PhysLoom 把“求解什么”和“展示什么”分开。实体、关系和参数先定义模型;show 选择标注,animate 请求动画。
展示求解结果
show cargo.forces R.tension cargo.displacement cargo.force_diagram
forces 在主图中展示力矢量;force_diagram 生成单独的受力分析图。矢量的方向和大小来自求解结果,不应由渲染器猜测。
当图上信息太多时,只保留讲解当前步骤需要的内容。隐藏张力或重力不会改变模型,只会减少视觉噪声。
请求运动
所有动画统一使用 animate,例如让实验运行三秒,以半速观看:
animate duration=3s speed=0.5
duration 是实验时长;speed 是倍速,默认 1。这里播放六秒,但实验只推进三秒。
倍速不会改变力、速度或轨迹。要规定绳端移动一米,可写
animate R.free distance=1m duration=2s speed=1。
对可由模型推导结束时刻的过程,可以省略时长,让模型决定事件或周期终点:
animate left speed=0.25
animate planet speed=8e6
animate electron speed=1e-8
这三行是不同场景的独立示例。天体运动需要快放,微观运动需要慢放,倍速含义不变。 编译器选择对应领域的求解器。没有匹配求解器时产生错误,不会凭空生成运动。
动画必须共享物理状态
物体位置、绳段长度、弹簧伸长、速度箭头和读数必须从同一个 MotionClip 采样。这样暂停在任意一帧时,图、数值和受力仍然互相一致。
删掉 animate 可得到静态图。不要用手写关键帧掩盖缺失的物理求解。
一个完整例子
scene moving_pulley
support ceiling orientation=horizontal
load cargo 20kg
pulley M, F
M <-> cargo
F <-> ceiling
rope R
R: ceiling -> M -> F -> R.free
animate distance=1m duration=3s speed=1
show R R.displacement cargo.displacement cargo.force_diagram
这段源码声明物理附着关系,并将绳命名为 R,以选择它的张力和自由端位移。静态切点、机械利益、重物位移、自由端动画和受力图都来自同一份已求解拓扑。