Mam prostokąt 2D z pozycją x, y, wysokością i szerokością oraz w pobliżu losowo ustawionego punktu.
Czy istnieje sposób, aby sprawdzić, czy ten punkt może kolidować z prostokątem, jeśli znajduje się bliżej niż pewna odległość? Wyobraź sobie, że niewidoczny promień poza tym punktem koliduje ze wspomnianym prostokątem. Mam z tym problemy po prostu dlatego, że to nie jest kwadrat!
collision-detection
geometry
John Smith
źródło
źródło
Zakładam, że twój prostokąt jest wyrównany względem osi.
Musisz tylko „zaciśnąć” punkt w prostokącie, a następnie obliczyć odległość od zaciśniętego punktu.
Punkt = (px, py), Prostokąt = (rx, ry, szerokość, wysokość) // (lewy górny róg, wymiary)
źródło
W tym celu należy użyć kolizji koło-prostokąt. Jest podobny pytanie na przepełnienie stosu.
Środek twojego okręgu byłby pytaniem, a promień byłby odległością, którą chcesz sprawdzić.
źródło
Jeśli próbujesz obliczyć odległość od punktu do krawędzi prostokąta, praca z każdym z dziewięciu regionów utworzonych przez prostokąt może być najszybszym sposobem:
źródło
[Zmodyfikowana odpowiedź na podstawie komentarzy]
Jeśli chcesz sprawdzić, czy punkt znajduje się w granicach powiedzmy 10 jednostek, jeśli szary prostokąt na obrazku poniżej, sprawdzisz, czy punkt znajduje się w jednym z
To podejście jest trochę nieeleganckie. Podobna metoda, która pozwala uniknąć konieczności testowania wszystkich 4 rogów za pomocą symetrii prostokąta, jest tutaj udokumentowana podczas przepływu stosu
źródło
Możesz użyć czegoś takiego:
źródło