Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size
Главная Статьи Математика Проверка пересечения двух четырёхугольников (array of TPoint)

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

Оцените материал
(0 голосов)

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

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;
Прочитано 8580 раз

Авторизация



Счетчики