Я работаю над физическим моделированием снарядов и застрял на земле при столкновении. У меня есть земля из четырехугольников, как это
У меня есть точки, хранящиеся в массиве, поэтому я подумал, что если я возьму квад, где происходит столкновение, и вычислю углы квада (в направлениях x и z), то смогу использовать это для изменения скорости снаряда.
Вот где я застрял. Я думал, что должен найти самую низкую и самую высокую точки, а затем найти вектор между ними, но это не даст углов во всех направлениях, что я и хочу. Я знаю, что должен быть способ сделать это, но как?
То, что вы хотите, это нормальный квад.
Вот ответ, который показывает, как получить нормальный квад
После того, как вы получили нормальное, вам нужно рассчитать силу ответ столкновения. Его направление является нормалью четырехугольника, а сила — это сила, которую снаряд оказывает в направлении четырехугольника. Прилагаемая сила рассчитывается с использованием точечного произведения скорости снаряда и нормали обратного квадрата (Вот ссылка на вики для точечного продукта)
Вектор ответа должен быть таким:
Vector3 responseForce = dot(projectile.vel, -1 * quad.normal) * quad.normal;
projectile.vel += responseForce;
Других решений пока нет …