cloneList = Point [](放入构造函数的一系列点) 我已经尝试了很多不同的时间来修复这个公式,但是我想要了。该公式被发现 http://en.wikipedia.org/wiki/Shoelace_formula index(i)是一个同时具有x和y值的点。
public double getArea() {
double area = 0;
for (int i = 0; i < cloneList.length-1; i++){
area += cloneList[i].getX()*cloneList[i+1].getY() - cloneList[i+1].getX()+cloneList[i].getY();
}
area = area/2;
//System.out.println(Math.abs(area));
return Math.abs(area);
}
答案 0 :(得分:0)
我对这个公式并不熟悉,但生病了... 对我来说,看起来好像你没有正确地遵循公式,这将是我的实现(基于我从维基页面xD收集的内容)
public double getArea(){
double area = 0;
int n = cloneList.length;
double firstSum = 0;
double secondSum = 0;
for(int i = 0;i< cloneList.length - 1;i++){
firstSum+= cloneList[i].getX()*cloneList[i+1].getY();
secondSum+= cloneList[i+1].getX()*cloneList[i].getY();
}
firstSum+=cloneList[cloneList.length-1].getX()*cloneList[0].getY();
secondSum-=cloneList[0].getX()*cloneList[cloneList.length-1].getY();
double finalSum = firstSum-secondSum;
area = Math.abs(finalSum)/2;
return area;
}