Плюшевая геометрия (информатика)

  1. Учимся вычислять площадь.

Прямоугольник со сторонами a, b: a * b.

Параллелограмм со стороной a, высотой h:  a * h.

Треугольник со сторонами a, b, c: sqrt(p * (p - a) * (p - b) * (p - c))

Треугольник со основанием c, высотой h: ½ c * h

Трапеция со сторонами a, b, высотой h: ½ (a + b) * h

Последовательно идем от вершины к вершине. Если идем по вертикали, то не делаем ничего, если по горизонтали вправо, то прибавляем площадь прямоугольника под этим отрезком, если влево — вычитаем площадь прямоугольника под этим отрезком. Если мы обходили многоугольник по часовой стрелке, мы получим его площадь, а если против — его площадь со знаком минус, то есть, результат надо взять модуль результата.

Последовательно идем от вершине к вершине, с каждой стороной прибавляя (или вычитая) трапецию под ней. Например, идя от первой вершины ко второй, прибавляем к общей площади (y1 + y2) * (x2 - x1) / 2. Действительно, y1 и y1 — основания трапеции, (x2 - x1) — ее высота. Причем, если x2 < x1, то мы идем налево и площадь трапеции войдет в общую сумму со знаком минус, что нам и нужно.

  1. Применяем измерение площадей.
  1. Пересечение прямоугольников на плоскости
  1. Площадь объединения прямоугольников на плоскости