У меня есть 2D-прямоугольник с позициями x, y, высотой и шириной, а также случайно расположенная точка рядом.
Есть ли способ проверить, может ли эта точка сталкиваться с прямоугольником, если он ближе определенного расстояния? Представьте себе невидимый радиус за пределами этой точки, сталкивающейся с указанным прямоугольником. У меня проблемы с этим просто потому, что это не квадрат!
collision-detection
geometry
Джон Смит
источник
источник
Я предполагаю, что ваш прямоугольник выровнен по оси.
Вам просто нужно «зажать» точку в прямоугольнике, а затем вычислить расстояние от зажатой точки.
Point = (px, py), Rectangle = (rx, ry, rwidth, rheight) // (верхний левый угол, размеры)
источник
Для этого вы должны использовать столкновения прямоугольник с кругом. Есть похожий вопрос по переполнению стека.
Центром вашего круга будет точка, о которой идет речь, а радиусом будет расстояние, которое вы хотите проверить.
источник
Если вы пытаетесь определить расстояние от точки до края прямоугольника, работа с каждой из девяти областей, созданных прямоугольником, может быть наиболее быстрой:
источник
[Измененный ответ на основе комментариев]
Если вы хотите увидеть, находится ли точка в пределах, скажем, 10 единиц, если серый прямоугольник на изображении ниже, вы проверяете, находится ли точка в каком-либо из
Этот подход немного не элегантен. Подобный метод, который избегает необходимости тестировать все 4 угла с помощью симметрии прямоугольника, описан здесь на stackoverflow
источник
Вы можете использовать что-то вроде этого:
источник