现在的位置: 首页 > 综合 > 正文

HUD2036——任意多边形面积求法

2013年07月20日 ⁄ 综合 ⁄ 共 548字 ⁄ 字号 评论关闭

任意多边形都可以划分成若干个三角形,通过计算三角形的有向面积并相加,既得多边形的有向面积。

三角形的有向面积求法:

例:三角形的三个顶点按逆时针的顺序给出A(x1,y1),B(x2,y2),C(x3,y3);

有向面积 S=0.5*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);(此时计算的S是正数,若A,B,C按顺时针给出,S为负值)。

给出杭电2036解题代码:

#include<stdio.h>
#include<math.h>
double area(int x1,int y1,int x2,int y2,int x3,int y3)
{
double area1=x1*y2+x3*y1+x2*y3-x1*y3-x2*y1-x3*y2;
return area1/2.0;
}
int main()
{
int n,x[100],y[100],i,j;
while(scanf("%d",&n)!=EOF&&n)
{
double s=0;
for(i=0;i<n;i++)
scanf("%d %d",&x[i],&y[i]);
for(i=1;i<n-1;i++)
{
s+=area(x[0],y[0],x[i],y[i],x[i+1],y[i+1]);
}
printf("%.1lf\n",s);
}
return 0;
}

抱歉!评论已关闭.