Liczenie kątów pomiędzy odcinkami/wektorami?

0

Witam
Potrzebowałbym pomocy w stworzeniu funkcji liczącej kąty pomiędzy odcinkami tzn. mam wielokąt wypukły i punkt. Na podstawie sumy kątów pomiędzy półprostymi poprowadzonymi od punktu do każdego z wierzchołków program stwierdza czy punkt jest wewnątrz czy na zewnątrz wielokąta. Próbowałem zrobić to funkcją atan2, jednak tam musiałbym zrobić bardzo dużo przypadków dla różnych miar kątów.
znalazłem coś takiego http://paulbourke.net/geometry/insidepoly/ (Solution2), jednak nie potrafię tak tego zmodyfikować, żeby dołączyć do mojego projektu.
aktualnie projekt sprawdza czy punkt jest wewnątrz wielokąta algorytmem półprostych i rysuje to za pomocą biblioteki winbgi, jednak potrzebuje jeszcze tego algorytmu. No chyba że znacie inny prostszy w implementacji algorytm sprawdzania wzajemnego położenia punktu i wielokąta.
Pomoże ktoś?

0
  1. Akurat to co jest w linku to nie są wielokąty wypukłe.
  2. Stwierdzając coś takiego zapewne masz współrzędne, a jeśli masz współrzędne, to wystarczy zrzutować figurę na oś Ox i na oś OY, jeżeli współrzędne pktów znajdują się w przedziale, to znaczy, że pkt jest w środku wielokąta.
0

jak chcesz sprawdzać wypukłość figur to najlepiej skorzystać ze zwykłego iloczynu wektorowego (sprawdzać znak), a jeśli chcesz kąty to kąt między osią OX a wektorem [x,y] przyłożonym w punkcie (0,0) wynosi atan2(y,x)

0

Mają normalny spójny obszar (niekoniecznie wypukły), wystarczy sprawdzić ile odcinków przecina dowolna półprosta wychodząca z testowanego punktu. Jeśli liczba przecięć jest nieparzysta to testowany punkt jest wewnątrz obszaru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1