2012-08-09 5 views
1

Можно создать дубликат:
Circle-Rectangle collision detection (intersection)
How to determine the collision of a circle with a rectangle?Как обнаружить конфликт между кругом и блоком?

Я хочу, чтобы обнаружить пересечения или столкновения окружности с Generaly расположенным блоком. Блок прямоугольный и может быть любого размера или вращения.

Какова математика позади этого?

+0

посмотреть здесь: http://stackoverflow.com/questions/401847/circle-rectangle-collision-detection-intersection – tokland

ответ

0

Напишите одну функцию, которая проверяет, что произвольный отрезок ab пересекает круг C. Напишите вторую функцию, которая проверяет, находится ли точка p внутри круга C. Затем вызовите 1-ю функцию четыре раза, для четырех сторон прямоугольника, и если все это не удастся, вызовите вторую функцию на одном углу (чтобы проверить, полностью ли прямоугольник внутри круга). В зависимости от вашего определения «столкновения» вам может потребоваться также проверить, полностью ли круг внутри прямоугольника!

Существуют различные способы ускорения вычислений, если вы собираетесь использовать эти миллионы раз в режиме реального времени. Наиболее очевидным является первая проверка на квадрат S, ограничивающий круг C, и только затем перейдите к (слегка) более дорогому круговому тесту.

Смежные вопросы