Вычисление площади одноконтурного несамопересекающегося многоугольника

Previous  Top  Next

    
 

 

Code:

{ **** UBPFD *********** by kladovka.net.ru ****

>> Вычисление площади одноконтурного несамопересекающегося многоугольника

 

1.Для многоконтурных или самопересекающихся многоугольников функция вернет неверный результат.

2.Площадь всегда положительна (т.е. не зависит от направления обхода).

 

Зависимости: нет

Автор:       Виктор Щербаков, shherbakov@yandex.ru, Нижний Новгород

Copyright:   Виктор Щербаков

Дата:        18 апреля 2002 г.

********************************************** }

 

// Точка

type TFloatPoint = record

  X, Y: Double;

end;

 

// Точки полигона

type TPolygonPoints = array of TFloatPoint;

 

// Сама функция

function PolygonSquare(Poly: TPolygonPoints): Double;

var

  I, J, HP: Integer;

begin

Result := 0;

HP := High(Poly);

for I := Low(Poly) to HP do

begin

   if I = HP then J := 0

     else J := I + 1;

   Result := Result + (Poly[I].X + Poly[J].X) * (Poly[I].Y - Poly[J].Y);

end;

Result := Abs(Result) / 2;

end;

 

©Drkb::04123