Đây là một chương trình C ++ để tìm diện tích của đa giác bằng cách sử dụng thuật toán slicker tránh Triangulation để tìm diện tích của một đa giác.
Nó giả định quy ước toán học thông thường rằng y dương hướng lên trên. Trong các hệ thống máy tính mà y dương hướng xuống, điều dễ làm nhất là liệt kê các đỉnh ngược chiều kim đồng hồ bằng cách sử dụng tọa độ "dương y hướng xuống". Hai hiệu ứng sau đó bị loại bỏ để tạo ra một vùng tích cực.
Các hàm và mã giả
Thuật toán
Begin function Area() is used to calculate area of a polygon take the polygon p as argument. for i = 0 to p.n-1 initialize j = (i + 1) % p.n; calculate t =t+((p.p[i].b * p.p[j].b) - (p.p[j].a * p.p[i].b.)) return t/2 End
Mã mẫu
#include <iostream> using namespace std; const int MAX = 200; class P// to declare variables { private: public: double a, b; }; class Polygon { private: public: P p[MAX]; int n; Polygon()//take the coordinates of each point of polygon { for (int i = 0; i < MAX; i++) P p[i]; } }; double Area(Polygon p)//area calculation { double t = 0; for (int i = 0; i < p.n; i++) { int j = (i + 1) % p.n; t += (p.p[i].b * p.p[j].b) - (p.p[j].a * p.p[i].b); } return t / 2; } int main(int argc, char **argv) { Polygon p; cout << "Enter the number of points in Polygon: "; cin >>p.n; cout << "Enter the coordinates of each point: "; for (int i = 0; i < p.n; i++) { cin >>p.p[i].a; cin >>p.p[i].b; } double a = Area(p); if (a >0)//if area>0 cout << "The Area of Polygon with " << p.n << " points using Slicker Algorithm is : " << a; else cout << "The Area of Polygon with " << p.n << " points using Slicker Algorithm is : " << (a * -1); }
Đầu ra
Enter the number of points in Polygon: 6 Enter the coordinates of each point: 1 1 2 2 3 3 4 4 5 5 6 7 The Area of Polygon with 6 points using Slicker Algorithm is : 2.5