Я просто немного разбираюсь в обработке, так как я знаю это лучше, чем любой другой язык, и наткнулся на этот сайт Custom 2d physics engine. Все идет нормально. Я нахожусь в точке, где у меня есть 2 прямоугольника, и мне нужно разрешить столкновение. Согласно этому документу я должен использовать код:Попытка создать физический движок в java из документального фильма, который использует C++
void ResolveCollision(Object A, Object B)
{
// Calculate relative velocity
Vec2 rv = B.velocity - A.velocity
// Calculate relative velocity in terms of the normal direction
float velAlongNormal = DotProduct(rv, normal)
// Do not resolve if velocities are separating
if(velAlongNormal > 0)
return;
// Calculate restitution
float e = min(A.restitution, B.restitution)
// Calculate impulse scalar
float j = -(1 + e) * velAlongNormal
j /= 1/A.mass + 1/B.mass
// Apply impulse
Vec2 impulse = j * normal
A.velocity -= 1/A.mass * impulse
B.velocity += 1/B.mass * impulse
}
Это написано в C++, так что я должен был бы портирование на Java. И здесь я зацикливаюсь на двух вещах. 1: Что означает автор с «нормальным»? как я могу получить «нормальный»? вещь 2 - эти 3 строки кода:
Vec2 impulse = j * normal
A.velocity -= 1/A.mass * impulse
B.velocity += 1/B.mass * impulse
Он создает вектор, который имеет только 1 номер? j * нормальный? У меня нет четкой картины о том, что именно происходит, что на самом деле не приносит мне пользы.
Если вы не знаете, что такое нормальный вектор, это не вопрос программирования: вы должны сделать некоторые фоновые чтения по математике, моделируемой. http://mathworld.wolfram.com/NormalVector.html –
нормаль определен в другом месте. Поиск объекта или любых «глобальных» – JFPicard
«Пользовательский физический движок физики» -> Вы ссылаетесь на страницу под названием «Как создать собственный 2D-движок физики». –