两个圆形物体斜着相碰时速度怎样分解:状态推演第07例
两个物体斜向接触时,相对运动可以分成沿接触法线和沿切线的两部分。只改变法线分量,就能构造一个没有摩擦的二维碰撞模型,而不必把整个速度向量都反向。
先把规则写清楚
本例法线n是单位向量,由物体A指向B,切线取负ny、nx。相对速度是B减A;其法线分量小于零才视为正在接近。冲量大小为负的(一加恢复系数)乘该分量,再除以两质量倒数之和。A减去冲量除质量乘法线,B加上相应项。
本例输入与推演结果
六组独立接触状态,长度和时间使用同一套单位,所有分数保留精确值。
输入质量、速度、法线、恢复系数 | 相对法线速度 | 冲量 | A后速度 | B后速度 | 动能前后 {'mass': [1, 7], 'a': [-5, 4], 'b': [1, 3], 'n': ['3/5', '4/5'], 'e': '0'} | 14/5 | 0 | ['-5', '4'] | ['1', '3'] | 111/2→111/2 {'mass': [5, 4], 'a': [1, 1], 'b': [-5, 0], 'n': ['4/5', '-3/5'], 'e': '1/2'} | -21/5 | 14 | ['-31/25', '67/25'] | ['-11/5', '-21/10'] | 55→403/10 {'mass': [4, 1], 'a': [-2, 4], 'b': [-3, 3], 'n': ['1', '0'], 'e': '1'} | -1 | 8/5 | ['-12/5', '4'] | ['-7/5', '3'] | 49→49 {'mass': [5, 2], 'a': [4, -3], 'b': [1, -1], 'n': ['3/5', '4/5'], 'e': '0'} | -1/5 | 2/7 | ['694/175', '-533/175'] | ['38/35', '-31/35'] | 129/2→4513/70 {'mass': [6, 3], 'a': [-2, 5], 'b': [0, 3], 'n': ['1', '0'], 'e': '1/2'} | 2 | 0 | ['-2', '5'] | ['0', '3'] | 201/2→201/2 {'mass': [4, 6], 'a': [3, 1], 'b': [-5, 3], 'n': ['4/5', '-3/5'], 'e': '1'} | -38/5 | 912/25 | ['-537/125', '809/125'] | ['-17/125', '-81/125'] | 122→122这里的编号只用来辨认本例中的对象,不能当成另一份记录里的固定身份。阅读表格时先找到输入,再顺着运算顺序对照输出;空列表、零值和不存在的结果有不同含义,不能混用。表中分数保留精确值,小数显示仅为阅读方便。
怎样自己复核
逐项比较碰撞前后总动量,两个坐标方向都应保持。碰撞后的相对法线速度应是原值乘负恢复系数,而各物体切线速度不变。恢复系数在零到一之间时,总动能不能增加;正在远离的两物体不再施加冲量。
练习时分别把恢复系数设为零和一,观察法线相对速度与能量变化。质量很大的一方速度变化较小,但本例质量都有限,不能直接把其中一个当成完全不动的墙。若法线不是单位向量,必须先调整公式,不能照搬这里的数值。
适用范围
这是一次已经确定接触方向的速度响应,不负责寻找首次接触时刻、修正穿透或处理旋转。没有摩擦意味着切向冲量为零,不意味着两个物体原本没有切向速度。
本例是一套可复现的游戏机制练习,不依赖具体品牌或某个软件的默认设置。修改任何边界约定、输入参数或操作顺序后,应重新推演并保存中间状态。发现差异时先定位第一处不一致,再判断是规则不同还是计算错误,不要只把最终答案调整到看起来相同。
