C++實現——任意多邊形的面積
阿新 • • 發佈:2019-01-29
//求任意多邊形的面積
/*語法:result = polygonarea(vector<Point>&polygon, int N);
引數:
polygon:多變形頂點陣列
N:多邊形頂點數目
返回值:多邊形面積
注意:
支援任意多邊形,凹、凸皆可
多邊形頂點輸入時按順時針順序排列
*/
#include <iostream>
#include <vector>
using namespace std;
typedef struct Point{
double x, y;
Point(){}
} Point;
double polygonarea(vector <Point>&polygon, int N)
{
int i, j;
double area = 0;
for (i = 0; i<N; i++) {
j = (i + 1) % N;
area += polygon[i].x * polygon[j].y;
area -= polygon[i].y * polygon[j].x;
}
area /= 2;
return(area < 0 ? -area : area);
}
//測試函式
int main(){
vector <Point> polygon;
int n;
cin >> n;
polygon.resize(n);
int i = 0;
while (n--){
double x, y;
cin >> x >> y;
polygon[i].x = x;
polygon[i].y = y;
++i;
}
cout << "此多邊形的面積為" << polygonarea(polygon, polygon.size()) << endl;
return 0;
}