← Назад к геометрии

Площадь многоугольника

Формула Гаусса (метод трапеций) для вычисления площади произвольного многоугольника

🐍 Python
n = int(input())
A = [list(map(int, input().split())) for _ in range(n)]
z = 0

for i in range(n - 1):
    z += A[i][0] * A[i + 1][1] - A[i + 1][0] * A[i][1]

z += A[-1][0] * A[0][1] - A[0][0] * A[-1][1]
z = abs(z) / 2

print(z)
⚙️ C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    vector<pair<double, double>> points(n);
    for (int i = 0; i < n; i++) {
        cin >> points[i].first >> points[i].second;
    }
    
    double area = 0;
    for (int i = 0; i < n; i++) {
        int j = (i + 1) % n;
        area += points[i].first * points[j].second;
        area -= points[j].first * points[i].second;
    }
    
    area = abs(area) / 2.0;
    cout << area << endl;
    
    return 0;
}

Формула Гаусса (метод трапеций)

Площадь произвольного многоугольника, заданного последовательностью вершин (в порядке обхода), вычисляется по формуле:

S = ½ · |Σ (xᵢ·yᵢ₊₁ - xᵢ₊₁·yᵢ)|

Как это работает

Важно: Вершины многоугольника должны быть заданы в правильном порядке (без самопересечений). Формула работает для любых (в том числе невыпуклых) простых многоугольников.

Пример для квадрата

Пусть вершины квадрата: (0,0), (1,0), (1,1), (0,1)

Сумма = 0·0 + 1·1 + 1·1 + 0·0 - (0·1 + 0·1 + 1·0 + 1·0) = 0+1+1+0 - (0+0+0+0) = 2

Площадь = |2|/2 = 1

Формат ввода и вывода

Ввод:

Вывод:

Пример ввода (квадрат):

4
0 0
1 0
1 1
0 1

Вывод: 1.0

Пример ввода (прямоугольник):

4
0 0
3 0
3 2
0 2

Вывод: 6.0

Попробовать онлайн

Введите количество вершин и их координаты:

Результат появится здесь...