/*
计算凸四边形面积
原理:分为两个三角形分别计算面积
海伦公式: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;
}
网友评论