C++实现——任意多边形的面积

来源:互联网 发布:mac连接usb鼠标 编辑:程序博客网 时间:2024/06/08 10:02

这里写图片描述

//求任意多边形的面积/*语法: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;}
0 0
原创粉丝点击