Cześć. Jestem trakcie pisania programu określającego czy punkt jest w środku czy na zewnątrz wielokąta. Niestety mam problem, ponieważ dla niektórych przypadków program wyświetla sprzeczne informacje np. dla punktu poza wielokątem daje True. Kod mojego algorytmu:
int W = (x1 - x)*(b - b) - (y1 - y) * (a - 600);
int Wt = (a - x)*(b - b) - (b - y) * (a - 600);
int Ws = (x1 - x)*(b - y) - (y1 - y) * (a - y1);
double t = (1.0*Wt) / (1.0 *W);
double s = (1.0 *Ws) / (1.0 *W);
if (W == 0)
{
}
else
{
spr = 1;
//c++;
}
if (t >= 0.0 && t <= 1.0 && s >= 0.0 && s <= 1.0)
{
spr = 1;
}
else
{
spr = 0;
}
if (spr == 1)
{
c++;
}
}
}
if (c % 2 != 0 && c>=1 )
{
MessageBox::Show("True");
}
else if(c% 2 == 0 || c == 0)
{
// MessageBox::Show(Convert::ToString(c));
MessageBox::Show("False");
}
Dzięki za wszelkie wskazówki.