Пусть даны две линии в 2D пpостpанстве. Так же у их известны кооpдинаты начальных и
конечных точек (x1,y1)-(x2,y2) и (x3, y3)-(x4-y4). Нужно определить, пересекаются ли эти линии.
Вот решение этой задачи:
z1 = (x3 - x1) * (y2 - y1) - (y3 - y1) * (x2 - x1);
z2 = (x4 - x1) * (y2 - y1) - (y4 - y1) * (x2 - x1);
if(z1 * z2 > 0) intercept = false;// не пересекаются
else intercept = true;// пересекаются
При сравнении, конечно перемножать необязательно. Можно лиш проверить знаки у z1 и z2 и сделать вывод.
Написал Вася Пупкин.