一种广为人知的物理体验,称为“牛顿的摇篮”,请参阅 Wikipedia ref
随着该系统第一个球的偏离和随后返回到初始位置,其能量和动量将通过三个中间球原封不动地传递到最后一个球,后者将获得相同的速度并上升到相同的高度。反过来,他将沿着链条再次将动量和能量传递给第一个球。
有必要制作一个动画来展示这种身体体验。
动画脚本:
- 右球以45度角向右缩回
- 在与其他球碰撞之前将球丢回去
- 最左边的球以 45 度角飞出。
- 回来并击中相邻的球
- 最右边的球飞出 45 度
- 动画循环
最好使用 SMIL SVG 实现动画

最简单的 CSS 版本:
微笑 SVG。单击最右边的球时的动画
删除了一堆代码并手动制作
一般来说,所有动画都发生在 defs 中,我通过使用在 html 中显示已经动画的图标
框架是在矢量编辑器中绘制的,它占用了代码的很大一部分。
现场演示
type="rotate"我没有在属性中添加两个极端位置,而是
values添加了中间位置,以使动画在轨迹的不同部分不均匀,使用keyTimeskeyTimes="0;0.25;0.78;1"<polyline stroke="black" points="160, 65 160,220" />对于第一个球,旋转中心的坐标为x="160"y="65"<use>应用了偏移克隆。在第一个动画完成后开始第二个动画(弹跳右球
id="an5") - 击中左球id="an1"将是: begin="an1.end"循环动画
第二个动画结束后,第一个动画开始。
开始=“0s;an5.end”
两个球轮流动画
现场演示
添加了一个动画块。
每个球都有自己的旋转中心坐标,其余的,如第一个答案
下面是完整的代码: