Skocz do zawartości

[C++] Wielokąt


SilkyBoy

Polecane posty

Sprawa jest taka. Mam napisac program, który bedzie prezentowal dzielnice miasta i sprawdzal do jakiej dzielnicy nalezy dany punkt (wprowadzany z klawiatury). Inaczej mówiąc mam zrobic klase "wielokąt" w ktorej beda podane wierzcholki dzielnic i napisac do tego jakis algorytm sprawdzajacy w jakiej dzielnicy lezy wpisany przez nas punkt. Bez mapy bitowej (rysowanie tu nie potrzebne, bardziej chodzi o algorytm). Tylko nie berdzo wiem jak sie za to zabrac... Jakies podpowiedzi ?
Link do komentarza
Udostępnij na innych stronach

Tak na szybko wymyśliłem takie rozwiązanie:
Każdy obszar można podzielić na trójkąty (łatwiej będzie sprawdzić czy punkt leży wewnątrz trójkąta).
Teraz to już geometria analityczna się kłania wink.gif Bierzemy każde dwa wierzchołki trójkąta, przez które przeprowadzamy prostą i sprawdzamy czy nasz wskazany punkt leży po tej samej stronie prostej, po której leży trzeci wierzchołek rozpatrywanego trójkąta. Jeżeli wszystkie 3 testy wypadną pomyślnie to punkt leży wewnątrz trójkąta.

Link do komentarza
Udostępnij na innych stronach

zalozenie 1:
Wielokat jest wypukly
Proponowane rozwiazanie: przepuszczasz prosa pinowa przez wskazany punkt liczysz ile razy przecioles wektory opisujace wielokat. Jesli liczba przeciec jest parzysta to jestes wewnatrz

Zalozenie 2:
Wielokat nie jest wypukly.
Proponowane rozwiazanie: podzial wielokata na trojkaty i sprawdzenie czy punkt najduje sie wewnatrz trojkata (alg. na sieci)

Operacje powyzej przeprowadzasz dla wszystkich wielokatow i wybierasz ten w ktorym sie znajduje punkt.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Gość
Temat jest zablokowany i nie można w nim pisać.
×
×
  • Utwórz nowe...