【发布时间】:2015-10-31 04:36:38
【问题描述】:
所以我进入了一个物理引擎。现在的对撞机是球体和平面。我发现碰撞的深度和接触点的法线很容易,但是对于我的一生,我无法理解能量的分布。
身体包含一个碰撞器、一个质量、一个力向量(速度 * 质量)、一个弹性值(0 没有反弹,1 完全反弹)和一个摩擦值(0 滑香肠,1 动量吸血鬼)我用谷歌搜索到地狱又回来,一切都出现了 1D 和 2D 的简化,但我根本无法将它们适应 3D。
编辑:我尝试关注此页面: http://www.plasmaphysics.org.uk/collision3d.htm。看起来很简单,但由于某种原因,我仍然没有弹性为 1 的反弹。
我的实现如下:
var v = new vec3(
(body.force.x + other.force.x) / totalMass,
(body.force.y + other.force.y) / totalMass,
(body.force.z + other.force.z) / totalMass
);
body.force.set(
((velA.x - v.x) * elasticity + v.x) * body.mass,
((velA.y - v.y) * elasticity + v.y) * body.mass,
((velA.z - v.z) * elasticity + v.z) * body.mass
);
other.force.set(
((velB.x - v.x) * elasticity + v.x) * other.mass,
((velB.y - v.y) * elasticity + v.y) * other.mass,
((velB.z - v.z) * elasticity + v.z) * other.mass
);
对于弹性,我尝试将两个物体的弹性相乘并取它们的平均值;没有变化。
【问题讨论】:
标签: physics rigid-bodies elasticity