Как определить расстояние в пикселях между кругом и различными препятствиями - PullRequest
0 голосов
/ 14 мая 2018

Итак, в качестве основного персонажа у меня есть круг, созданный в пигаме, и я хочу найти кратчайшее расстояние между его сторонами и различными окружающими препятствиями.Вы можете видеть, что я имею в виду на картинке.У меня есть левый квадрант и правый квадрант, и я хочу посмотреть, что существует в этих квадрантах.Каким бы ни был пиксель ближайшего препятствия по кругу, этот счетчик пикселей становится левым и правым значениями (т. Е. Если в правом квадранте ближайшее препятствие было на расстоянии 40 пикселей, то правое = 40).У меня также есть значение front, которое будет сканировать вещи прямо перед кругом.

Я видел вещи для поиска столкновения с кругом (создавая круговое поле вокруг объекта в целом)и я также видел материал, использующий теорему Пифагора для поиска расстояний, но я не уверен, как справиться с ним в более «сфокусированном» масштабе, если это имеет смысл.

Любые предложения о том, какидти об этом будет высоко ценится!Общая цель состоит в том, чтобы круг автоматически перемещался вокруг этих препятствий, избегая их, поэтому я хочу, чтобы он сканировал различные области, чтобы определить, как перемещаться по пространству.

Все пространство обнесено стеной, а все препятствия - это случайно расположенные квадраты внутри стены.

circle moving

1 Ответ

0 голосов
/ 14 мая 2018

Расстояние до круга равно расстоянию до центра минус радиус.

Теперь расстояние от прямоугольника до точки определяется с учетом девяти областей, определенных опорными линиямистороны.

В зависимости от региона, кратчайшее расстояние выровнено по оси (от стороны к точке) или наклонно (от угла к точке), а формулы просты.

enter image description here

Обсуждение еще проще для прямоугольного отверстия или внутреннего угла.

...