![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 2 Dołączył: 10.11.2009 Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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 ![]() Ten post edytował tlaguz 1.01.2010, 21:57:04 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 20:28 |