计算凸四边形面积

2018-12-18  本文已影响0人  疯人愿的疯言疯语
/*
计算凸四边形面积
原理:分为两个三角形分别计算面积
海伦公式:S=sqrt(p*(p-a)*(p-b)*(p-b))      p为周长的一般,a,b,c为三边长度
*/
#include <iostream>
#include <math.h>
using namespace std;

struct proposal_type{
    int x1,x2,x3,x4,y1,y2,y3,y4;
    double score;
};

double calcularea(const proposal_type & r){
    float d12=sqrt(pow(r.x2-r.x1,2)+pow(r.y2-r.y1,2));
    float d14=sqrt(pow(r.x4-r.x1,2)+pow(r.y4-r.y1,2));
    float d24=sqrt(pow(r.x2-r.x4,2)+pow(r.y2-r.y4,2));
    float d32=sqrt(pow(r.x2-r.x3,2)+pow(r.y2-r.y3,2));
    float d34=sqrt(pow(r.x3-r.x4,2)+pow(r.y3-r.y4,2));
    float p1=(d12+d14+d24)/2;
    float p2=(d24+d32+d34)/2;
    float s1=sqrt(p1*(p1-d12)*(p1-d14)*(p1-d24));
    float s2=sqrt(p2*(p2-d32)*(p2-d34)*(p2-d24));
    return s1+s2;
}
int main()
{
    proposal_type r1;
    r1.x1=0;
    r1.y1=0;
    r1.x2=3;
    r1.y2=0;
    r1.x3=3;
    r1.y3=2;
    r1.x4=2;
    r1.y4=2;
    r1.score=1.2;
    cout << calcularea(r1)<< endl;
    return 0;
}

上一篇下一篇

猜你喜欢

热点阅读