Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để triển khai Thuật toán nhấp nháy tránh Tam giác để tìm Diện tích của một đa giác

Đâ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