Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

01.01.2007
{ **** 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;