Алгоритм шнуровки (площадь Гаусса)
Алгоритм позволяет найти площадь со знаком (знак определяет направление обхода по часовой или против) любого многоугольника.
Более подробно смотри в википедии
Не самый оптимальный, но рабочий вариант алгоритма:
static double signedArea(Vector2d[] polygon)
{
double area = 0.0;
int j = 1;
for (int i = 0; i < polygon.Length; i++, j++)
{
j = j % polygon.Length;
area += (polygon[j].X - polygon[i].X) * (polygon[j].Y + polygon[i].Y);
}
return area / 2.0;
}
Задание:
1. Переделайте алгоритм таким образом, чтобы убрать из него операцию остаток от деления.