короче
здесь нашел ответ и написал так:
Код:
function peresechenie(p1,p2,p3,p4: Points): boolean;
// p1 - начало 1ого отрезка, p2 - конец 1ого отрезка
// p3 - начало 2ого отрезка, p4 - конец 2ого отрезка
var ua,ub: double;
begin
ua:=((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x))/((p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y));
ub:=((p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x))/((p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y));
// если 'ua' и 'ub' принадлежат [0,1] то отрезки пересекаются
if ((ua>=0) and (ua<=1)) and ((ub>=0) and (ub<=1)) then result:=true else result:=false;
end;
-----------------------------------------------------------------------
Теперь еще есть вопрос, как через две точки провести прямую? именно прямую а не линию, чтобы от точек было продолжение до конца формы, по идее можно это сделать по пиксельно, но может еще какой-нить вариант есть?