И что Вы уважаемые тут обсуждаете??? Это же элементарнее простого!!!
Я сам столкнулся с такой проблемой, когда писал движок для игры!!
Вот так выглядит примерный!!! алгоритм решения задачи (по заданной точке x,y установить принадлежность ее треугольнику, заданному вершинами в массиве T[]={x1,y1,x2,y2,x3,y3,...} )
Текст на С++:
-----------
int m; // это индекс в массиве T[], на тот случай если треугольников много :)
float ma=0.001; // микро-приращение дабы избежать неприятности вида <число>/0, выбирается произвольно
bool i1=i2=p1=p2=FALSE; // локальные переменные
int s1=s2=s3=s4=1;
if (T[m]-T[m+2]==0)
s1=sign (T[m+4]-T[m+2]);
if (T[m+4]-T[m+2]==0)
s2=sign (T[m]-T[m+2]);
if (T[m]-T[m+4]==0)
s3=sign (T[m+2]-T[m+4]);
if (T[m+2]-T[m+4]==0)
s4=sign (T[m]-T[m+4]);
if ((T[m]-T[m+2])*(T[m+4]-T[m+2])<0)
i1=TRUE;
if ((T[m]-T[m+4])*(T[m+2]-T[m+4])<0)
i2=TRUE;
if (i1)
{
if ((k1<k11&&k1<k12)||(k1>k11&&k1>k12))
p1=TRUE;
}
else
if ((k1<k11&&k1>k12)||(k1>k11&&k1<k12))
p1=TRUE;
if (i2)
{
if ((k2<k21&&k2<k22)||(k2>k21&&k2>k22))
p2=TRUE;
}
else
if ((k2<k21&&k2>k22)||(k2>k21&&k2<k22))
p2=TRUE;
if (p1&&p2) {...} — это условие того, что точка x,y действительно принадлежит треугольнику
----------
PS:Для установления принадлежности т. x,y двум и более треуг-ам проверить принадлежность для обеих отдельно и сделать соответствующий вывод: если оба принадлежат, то x,y соответственно принадлежит обеим :)