admin 发表于 2024-3-14 20:42:37

[每日一码] 求任意多边形的面积

//求任意多边形的面积
/*语法:result = polygonarea(vector<Point>&polygon, int N);
参数:
polygon:多变形顶点数组
N:多边形顶点数目
返回值:多边形面积
注意:
支持任意多边形,凹、凸皆可
多边形顶点输入时按顺时针顺序排列

*/
#include <iostream>
#include <vector>
using namespace std;
typedef structPoint{
    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.x * polygon.y;
      area -= polygon.y * polygon.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.x = x;
      polygon.y = y;
      ++i;
    }
    cout << "此多边形的面积为" << polygonarea(polygon, polygon.size()) << endl;


    return 0;
}
页: [1]
查看完整版本: [每日一码] 求任意多边形的面积