Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Вычисления



Вернуться к списку функций
 Проверка пересечения двух четырёхугольников (array of TPoint)

 Прислал: RYSoft (Гродно) ( 26 июля 2008 г. )
©  RYSoft
 Описание:
Использовался код Fenik'а

 Зависимости:
Winows

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Проверка пересечения двух четырёхугольников (array of TPoint)

Использовался код Fenik'а

Зависимости: Winows
Автор:       RYSoft, Zixzelzx@mail.ru, ICQ:499951339, Гродно
Copyright:   RYSoft
Дата:        26 июля 2008 г.
***************************************************************** }

function PtInTriang(const P, A, B, C: TPoint): Boolean;
  function _PIT(const C1, C2, C3: TPoint): Boolean;
  begin
   Result := False;
   if (P.x-C1.x)*(C1.y-C2.y) - (P.y-C1.y)*(C1.x-C2.x) >= 0 then
   if (P.x-C2.x)*(C2.y-C3.y) - (P.y-C2.y)*(C2.x-C3.x) >= 0 then
   if (P.x-C3.x)*(C3.y-C1.y) - (P.y-C3.y)*(C3.x-C1.x) >= 0 then
   Result := True;
  end;

 begin
   if (A.x-B.x)*(C.y-B.y) > (A.y-B.y)*(C.x-B.x)
   then Result := _PIT(A, C, B)
   else Result := _PIT(A, B, C);
 end;

function PtinTetragon(P: TPoint; Points: array of TPoint): boolean;
begin
  Result:= PtInTriang(P, Points[0], Points[1], Points[2]) or PtInTriang(P, Points[0], Points[2], Points[3]);
end;

function CrossTetragon(Points1: array of TPoint; Points2: array of TPoint): boolean;
var
  b: boolean;
  i: integer;
begin
  b:= false;
  for I := 0 to 3 do
    if PtinTetragon(Points1[i],Points2) then
      b:= true;
  if not b then
  for I := 0 to 3 do
    if PtinTetragon(Points2[i],Points1) then
      b:= true;
  Result:= b;
end;


Вернуться к списку функций

Наверх ▲