您的位置:首页 > 其它

HDU2036 多边形面积

2013-03-16 15:47 169 查看
题意:求多边形面积。

首先 对于两个向量 P,Q。P * Q = 1/2*area;

以原点作为每条向量边的起始点,然后在遍历一遍所有的点,得到res

这样在算面积的时候 多余的部分会在计算过程中 正负抵消 so 能得到sum_area

View Code

#include<stdio.h>
#include<math.h>
const int maxn = 105;
int n;
struct node{
int x,y;
}a[ maxn ];

double cross( node a,node b ){
return 1.0*a.x*b.y-1.0*a.y*b.x;
}

double get_area( ){
double res=0;
res=cross( a[ n-1 ],a[ 0 ] );
for( int i=1;i<n;i++ )
res+=( cross( a[ i-1 ],a[ i ] ) );
return res/2.0;
}

int  main(){
while( scanf("%d",&n),n ){
for( int i=0;i<n;i++ ){
scanf("%d%d",&a[ i ].x,&a[ i ].y);
}
double sum=get_area( );
printf("%.1lf\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: