hdu 1115 Lifting the Stone 多边形面积

多边形面积参考:http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html 


                           http://972169909-qq-com.iteye.com/blog/1131976

                         

                          http://hi.baidu.com/abcsf/item/9bac1805d1afdae3a01034cf

过程就是将不规则的多边形分割成不同的 n-2 个三角形,每个三角形都有自己的重心和质量

这些重心连接又是一个新的多边形,质量都集中在三角形的顶点 应用公式 即求出,


求多边形面积,


#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

struct node
{
    double x, y;
}p[5];

int main()
{
    #ifndef ONLINE_JUDGE
           freopen("in.txt","r",stdin);
    #endif // ONLINE_JUDGE
    int t;
    cin >> t;
    while(t--)
    {
        int n;
        scanf("%d", &n);
        scanf("%lf%lf", &p[0].x, &p[0].y);
        scanf("%lf%lf", &p[1].x, &p[1].y);
        double sx = 0, sy = 0, SS = 0;
        for(int i = 2; i < n; i++)
        {
            scanf("%lf%lf", &p[2].x, &p[2].y);
            double S = (p[1].x-p[0].x)*(p[2].y-p[1].y)-(p[2].x-p[1].x)*(p[1].y-p[0].y);
            S /= 2.0;
            SS += S;
            sx += (p[0].x+p[1].x+p[2].x)*S;
            sy += (p[0].y+p[1].y+p[2].y)*S;
            p[1] = p[2];
        }
        printf("%.2lf %.2lf\n", sx/SS/3, sy/SS/3);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值