Ну, я должен признать, что это было давно, так как я не касался старых библиотек, хранящихся в хранилище.К счастью, у меня есть источники под рукой, поэтому после ознакомления я расскажу метод, который работает для меня в отношении , как обнаружить столкновение объекта шара с стеной .
Я думаю, это подойдет вам, не знаю, лучшее или худшее решение, но работает !.Давайте начнем с определения того, как мы представляем данные для каждого шара, вспомним наших друзей из Unix, которые говорят, что часть сложности заключается в структуре данных, поскольку она является частью алгоритма в целом ... но достаточно чата, переходя кимеет значение .. с помощью такой структуры данных для представления Ball
class Ball
{
radio : number
x : number
y : number
}
Таким образом, вы можете нарисовать шар следующим образом:
function draw (Graphics g)
{
int r = ball.getRadio ();
int diam = rad * 2;
int px = (int) ball.getPx () - r;
int py = (int) ball.getPy () - r;
g.setColor (niceColor);
g.fillArc (px,py,diameter,diameter,0,360); // Fills a circular or elliptical arc covering the specified rectangle
}
// Отказ от ответственности, я не очень хорошо знаю примитивы для графических процедур на холсте, но я бы предположил, что у вас будет что-то, чтобы нарисовать круг со всем этим.У вас есть px, py, x, y, радио, диаметр.
В любом случае ответ на вопрос приходит сюда, где вы можете использовать этот код:
function isAHorizontalCollision (ball c,int width)
{
return (c.x > width - c.radio || c.x < radio);
}
function isAVerticalCollision (ball c,int height)
{
return (c.y > height - c.radio || c.y < radio);
}
// Предположим, что вмещающий прямоугольникгде мяч может двигаться между (0, ширина) для горизонтальной и (сверху, 0) вертикальной.
Важно сообщить, что это работает, только если значения x идут постепенно слева направо, а y понижается сверху вниз.
Надеюсь, моя машинопись похожаКод хорошо подходит для объяснения.У меня есть много исходных файлов в Java для этого.Если нужно больше.(Например, столкновение между двумя кругами).
Если у вас есть время , я бы порекомендовал проверить это , там очень и очень мощные вещи.