У меня есть шар и прямоугольник. Шарик может двигаться, прямоугольник фиксирован (масса = бесконечный).Решите пересечение между шаром и прямоугольником
Мяч имеет положение, скорость, радиус, массу.
Прямоугольник имеет положение, ширину и высоту.
У меня уже есть функции, которые обнаруживают столкновение, когда они сталкиваются и вычисляют правильный ответ, но у меня есть проблема, чтобы разрешить пересечение, прежде чем вычислять правильный ответ. В образе:
http://i.stack.imgur.com/Xq5Vk.png
Я использую Java.
EDIT: решаемый с помощью этого алгоритма:
- Вычислить ближайшую точку (я называю это P) между Прямоугольные и мячом (легко сделать с помощью функции Clamp)
- Вычислить вектор (Я называю это n), которые связывают центральную точку шара (я называю это C) и P (компоненты вектора (Px - Cx, Py - Cy))
- Рассчитать «длину» пересечения (я звоню он смещен) (ball.radius - n.len gth)
- Нормализовать n и умножить на смещение.
- Вычесть n на вектор положения шарика.
в Java-код:
private void resolveIntersectionWith(Ball ball){
double closestX = clamp(ball.position.x, left(), right());
double closestY = clamp(ball.position.y, top(), bottom());
Vector n = new Vector(closestX - ball.position.x, closestY - ball.position.y);
double offset = ball.radius - n.length;
n.normalize().multiply(offset);
ball.position.subtract(n);
}
Это похоже? [Расчет столкновения для движущегося круга без перекрытия границ] (http://stackoverflow.com/q/2751377/427192) –
Да похоже, но решение не будет работать для меня .. Я буду делать другие тесты – VanDir
Я думаю, что решение не работает, потому что мяч в вашей ссылке находится внутри прямоугольника. В моей проблеме мяч снаружи! – VanDir