Witam.
Potrzebuję napisać funkcję która sprawdzi czy punkt znajduje się w wielokącie.
Mam taki algorytm:
void check ( polygon [n ], n , x , y) {
int crossings =0;
int i =0 , j=n -1 , dx , dy ;
for (; i <n ; i ++) {
if (( polygon [i ].y <y && polygon [j ].y >= y) || ( polygon [j ].y <y && polygon [i ].y >= y )) {
dy = polygon [ i ]. y - polygon [j ]. y;
dx = polygon [ i ]. x - polygon [j ]. x;
if ( polygon [ i ]. x +(y - polygon [i ]. y )* dx /dy < x)
crossings ++;
}
j=i ;
}
return crossings %2;
}
Jednak potrzebne są tutaj wierzchołki wielokąta, a ja ich nie posiadam. Muszę je jakoś wyznaczyć,a nie wiem nawet czy się da.
Mój program działa tak, że klikam gdzieś na ekranie, a on wypełnia go kolorem, no wiadomo jeśli kliknięty pkt jest w wielokącie to wielokąt zostanie wypełniony.
Musze jednak dorobić opcję która wyświetli komunikat iż dany (kliknięty punkt) znajduje się w wielokącie.'
Czy ktoś wie jak to zrobić?
Dziękuję i pozdrawiam.