复杂的多边形区域

时间:2013-04-18 03:35:47

标签: java arrays area

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 个答案:

答案 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;



}