Показать сообщение отдельно
  #3  
Старый 21.02.2010, 16:26
Аватар для SerginhoLD
SerginhoLD SerginhoLD вне форума
Новичок
 
Регистрация: 19.11.2009
Сообщения: 73
Репутация: 12
По умолчанию

короче здесь нашел ответ и написал так:
Код:
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;


-----------------------------------------------------------------------

Теперь еще есть вопрос, как через две точки провести прямую? именно прямую а не линию, чтобы от точек было продолжение до конца формы, по идее можно это сделать по пиксельно, но может еще какой-нить вариант есть?
Ответить с цитированием