Все оказалось гораздо проще, есть алгоритм нахождения площади со знаком произвольного многоугольника.
Пусть многоугольник задан последовательностью вершин в форме массива координат вершин: Mas: array of TPoint;
Пусть, также, координаты начало и конца ломанной совпадают. Тогда 
- Код: Выделить всё
- Result := Result + (Mass[i+1].Y + Mass[i].Y)/2*(Mass[i+1].X-Mass[i].X)
Вычисленная по приведенной формуле площадь будет иметь знак плюс при обходе фигуры по часовой стрелке и знак минус при обходе против часовой стрелки, тогда как обычно полагают наоборот. Что бы совпасть с таким общепринятым определением, достаточно поставить знак минус перед суммой в приведенной формуле.
В итоге получается вот такая функция:
- Код: Выделить всё
- //вычисление площади со знаком для произвольного многоугольника
 function Square(Mass: TFigureMass): Real;
 var
 i: Integer;
 begin
 SetLength(Mass, Length(Mass)+1);
 Mass[High(Mass)] := Mass[0]; //начало и конец массива совпадают
 Result:=0;
 for i := 0 to Length(Mass) - 2 do
 Result := Result + (Mass[i+1].Y + Mass[i].Y)/2*(Mass[i+1].X-Mass[i].X)
 end;