2013-04-18 145 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; 



}