Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Thuật toán Slicker tính diện tích đa giác (không cần tam giác) trong C++


Thuật toán Slicker (còn gọi Shoelace formula) tính diện tích đa giác trực tiếp từ tọa độ đỉnh, không cần chia tam giác. Công thức: Area = ½ |Σ (x_i*y_{i+1} - x_{i+1}*y_i)|.

Thuật toán

Bắt đầu
  Area(polygon p):
    t = 0
    cho i = 0 đến n-1:
      j = (i+1) % n
      t += p[i].y * p[j].x - p[j].y * p[i].x
    trả về |t|/2
Kết thúc

Ví dụ minh họa

#include <iostream>
using namespace std;

struct Point { double x, y; };

double polygonArea(Point p[], int n) {
    double t = 0;
    for (int i=0; i

Kết quả (ví dụ)

So dinh: 6
Nhap toa do cac dinh (x y):
1 1
2 2
3 3
4 4
5 5
6 7
Dien tich da giac 6 dinh: 2.5