Главная
Дисциплины (2009-2010)
Дисциплины (2010-2011)
Разное
Популярные

Геометрические алгоритмы: пересекаются ли два отрезка?:

{ геометрические алгоритмы: Пересекаются ли 2 отрезка?                     }
{ ------------------------------------------------------------------------ }
{ Определяет пересечение отрезков A(ax1,ay1,ax2,ay2) и B (bx1,by1,bx2,by2),}
{ функция возвращает TRUE - если отрезки пересекаются, а если пересекаются }
{ в концах или вовсе не пересекаются, возвращается FALSE (ложь)            }
{ ------------------------------------------------------------------------ }

function Intersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2: real): boolean;
var v1, v2, v3, v4: real;
begin
   v1 := (bx2 - bx1) * (ay1 - by1) - (by2 - by1) * (ax1 - bx1);
   v2 := (bx2 - bx1) * (ay2 - by1) - (by2 - by1) * (ax2 - bx1);
   v3 := (ax2 - ax1) * (by1 - ay1) - (ay2 - ay1) * (bx1 - ax1);
   v4 := (ax2 - ax1) * (by2 - ay1) - (ay2 - ay1) * (bx2 - ax1);
   Intersection := (v1 * v2 < 0) and (v3 * v4 < 0);
end;

begin { основная программа, вызов функции - тест }
   writeln(Intersection(1, 1, 5, 5, 1, 2, 3, 1)); 
   writeln(Intersection(1, 1, 5, 5, 1, 2, 1, 3)); 
end.


Последнее обновление:
Copyright (C) 2009-2010 by RA0LHS
Hosted by uCoz