Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak sprawdzić czy punkt jest wewnątrz wielokąta.
tlaguz
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.01.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.

Ten post edytował -=Peter=- 1.01.2010, 21:41:46


--------------------
Go to the top of the page
+Quote Post
qwerty1440
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 10.11.2009

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


http://en.wikipedia.org/wiki/Point_in_polygon
Go to the top of the page
+Quote Post
tlaguz
post
Post #5





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.01.2009

Ostrzeżenie: (0%)
-----


Gdyby w gimnazjum była taka lekcja to zapewne bym wiedział jak to rozwiązać.

Edit: Dzięki Crozin biggrin.gif

Ten post edytował tlaguz 1.01.2010, 21:57:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:28