天天看點

N個構成的簡單多邊形面積

計算由N個點構成的簡單多邊形面積。不考慮可能存在的邊相交以及島洞等複雜情況。

計算公式:

S(N1,N2,N3…Nn)=0.5abs[(x1y2-y1x2)+(x2y3-y2x3)…+(xny1-yn*x1)]

(為什麼是這公式我也不知道)

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int n,i,k;
	int x[1000],y[1000];
	double sum=0;
	double area=0.0;
	printf("請輸入點的個數:\n");
	which(scanf("%d",&n) && n!=0)
	{
		printf("請輸入點的坐标,示例:1 2\n");
		for(i=0; i<n; i++)
		{
			scanf("%d %d",&x[i],&y[i]);
		}
		for(i=0; i<=n-1; i++)
		{
			sum=sum+(x[i]*y[i+1]-x[i+1]*y[i]);
		}
		sum=sum+(x[n]*y[0]-y[n]*x[0]);
		area=0.5*abs(sum);
		printf("%.2lf\n",area);
	}
}
           
N個構成的簡單多邊形面積
N個構成的簡單多邊形面積