Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić czy punkt jest wewnątrz wielokąta.
Forum PHP.pl > Forum > PHP
tlaguz
Witam.

Mam dany wielokąt o liczbie wierzchołków n. Znam x i y każdego wierzchołka i kolejność w jakiej się łączą.
Mam też dane x i y punktu, i muszę sprawdzić czy znajduje się on w wielokącie.

Jedyne rozsądne co mi przychodzi na myśl to odszukać w tym wielokącie trójkąty lub kwadraty, bo wtedy ze sprawdzeniem nie byłoby problemu, ale za to jest strasznie dużo roboty z takim algorytmem.

Może zna ktoś lepsze rozwiązanie? Googliłem za gotowym algorytmem, ale nie znalazłem nic ciekawego...

Z góry dziękuję za odpowiedź i pozdrawiam
tlaguz
-=Peter=-
Układ n nierówności? Jeśli znasz wszystkie współrzędne wierzchołków wielokąta, to możesz wyznaczyć równania prostych, które są krawędzą tej figury. Jeśli masz n równań prostych, pod x i y podstawiasz współrzędne punktu, którego sprawdzasz. Następnie z kolejności wnioskujesz kierunek wszystkich nierówności (bo interesuje Cie, czy dany punkt leży wewnątrz, a nie na krawędziach) i jeśli wszystkie n nierówności są prawdziwe, to znaczy że punkt leży w wielokącie. Teraz możesz zastanowić się nad implementacją i wydajnością, jedynie z czym może być problem to ustalenie kierunku nierówności w tych równaniach.
qwerty1440
Cytat(-=Peter=- @ 1.01.2010, 21:32:08 ) *
jedynie z czym może być problem to ustalenie kierunku nierówności w tych równaniach.

bzdura... funkcja liniowa sie klania.

Zas do autora: To forum o php, nie matematyce. Trzeba bylo w szkole na lekcjach uwazac.
tlaguz
Gdyby w gimnazjum była taka lekcja to zapewne bym wiedział jak to rozwiązać.

Edit: Dzięki Crozin biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.