2013-04-18 87 views
0

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); 
} 
+1

当我= cloneList.length-1时,你将什么添加到变量区域?提示:在这一点上添加是不正确的。 – Slartibartfast 2013-04-18 03:51:12

+0

呃...我不知道.. – Fish 2013-04-18 03:53:31

回答

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; 



}