HDU2036 计算多边形的面积

    计算多边形面积就是通过拆分三角形的方法,即为选取任意一个点,从该点出发,连接多边形的每一个顶点,这样就将多边形分为了许多个三角形。计算每一个三角形的面积即可,用叉积计算的每一个三角形的面积为"有向面积",直接将所有三角形的有向面积相加,结果的绝对值就是多边形的面积。

#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<cmath>
const double EPS = 1e-8;
const int N = 301;
using namespace std;
struct Point{
    Point(double l = 0, double r = 0) :x(l), y(r){};
    double x, y;
};
Point operator-(Point a, Point b){
    return Point(a.x - b.x, a.y - b.y);
}
double Cross(Point p0, Point p1, Point p2){
    Point a = p1 - p0;
    Point b = p2 - p0;
    return a.x*b.y - b.x*a.y;
}
int n;
Point P[N];
double ans;
int main(){
    int i;
    Point P0;
    while (scanf("%d", &n) && n){
        ans = 0;
        for (i = 0; i < n; i++)
            scanf("%lf%lf", &P[i].x, &P[i].y);
        P[n++] = P[0];
        for (i = 0; i < n - 1; i++){
            ans += Cross(P0, P[i], P[i + 1]);
        }
        ans = abs(ans / 2);
        printf("%.1lf
", ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/td15980891505/p/5735267.html