求任意多边形的面积
程序员文章站
2022-03-30 13:49:43
...
首先告诉你求n多边形面积的公式是:
S=1/2((x1y2-x2y1)+(x2y3-x3y2)+…+(xn-1yn-xnyn-1))
此公式适用于求任意n多边形的面积,甚至有时可以解决,判断多边形顶点的输入顺序,即顺时针或逆时针,看下面代码会给你讲解怎么判断,其实很简单
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2036
代码如下:
#include<stdio.h>
struct node
{
double x;
double y;
}pot[20000];
int main()
{
int n;
while(scanf("%d",&n),n!=0)
{
for(int i=0;i<n;i++)
scanf("%lf%lf",&pot[i].x,&pot[i].y);
double sum=0;
pot[n].x=pot[0].x;
pot[n].y=pot[0].y;
for(int i=0;i<n;i++)
sum+=(pot[i].x*pot[i+1].y-pot[i+1].x*pot[i].y);
sum=sum/2;//如果哟啊判断给定的多边形顶点的输入顺序,只需判断sum的正负,如果sum大于0则为逆时针输入的,否则为顺时针输入的
printf("%.1lf\n",sum);
}
return 0;
}