Так что я прыгаю в физический движок. Коллайдерами пока являются сферы и самолеты. Я обнаружил, что глубина столкновения и нормальная точка контакта достаточно легкая, но для жизни меня я не могу окутать голову в распределение энергии.Как найти скорость 2 сталкивающихся твердых тел?
Тела содержат коллайдер, массу, вектор силы (скорость * массу), значение упругости (0 без отскока, 1 полный отскок) и значение трения (0 скользкая колбаса, 1 импульс вампира) googled к черту и назад, и все приходит с 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
);
Для упругости я пытался как умножая эластичность оба тел и получение средний из них; без изменений.