思路来源:
http://blog.csdn.net/hemmingway/article/details/7814494
以下是该网址的内容:
设Ω是m边形(如下图),顶点沿边界正向排列,,坐标依次为
建立Ω的多边形区域向量图。
由图知坐标原点与多边形任意相邻的两个顶点构成一个三角形,而三角形的面积可由三个顶点构成的两个平面向量的外积求得。
任意多边形的面积公式
多边形计算公式的计算和原点的选取没有关系,通常可以选点(0,0)或者多边形的第一个点(这个时候比较直观了,看起来就是把多边形分成一个个三角形和加起来,读者自己可以画个图)就可以了。
我的代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int n=scanner.nextInt();
int i;
if(n==0){
break;
}
else {
int[] x=new int[100];
int[] y=new int[100];
double sum=0;
for(i=0;i<n;i++){
x[i]=scanner.nextInt();
y[i]=scanner.nextInt();
}
/*所有坐标输入完毕*/
for(i=0;i<n-1;i++){
sum+=x[i]*y[i+1]-x[i+1]*y[i];
}
sum+=x[i]*y[0]-x[0]*y[i];
System.out.println(sum/2);
}
}
}
}
我的疑惑:
对于sum的算法