所以我已经在javascript中获得了这个代码来从网络中计算不规则的多边形区域。计算多边形区域
function polygonArea(X, Y, numPoints)
{
area = 0; // Accumulates area in the loop
j = numPoints-1; // The last vertex is the 'previous' one to the first
for (i=0; i<numPoints; i++)
{ area = area + (X[j]+X[i]) * (Y[j]-Y[i]);
j = i; //j is previous vertex to i
}
return area/2;
}
var xPts = [3, 3, 2, 2, 3, 3, 6, 6, 9, 9, 4, 4 ];
var yPts = [2, 4, 4, 5, 5, 6, 6, 5, 5, 3, 3, 2];
var a = polygonArea(xPts, yPts, 4);
alert("Area = " + a);
结果似乎是正确的。如果按顺时针方向追踪顶点,它将显示正的结果,但如果我以逆时针方向追踪顶点,它将变为负值。为什么?
该算法如何工作?我真的很想知道它背后的数学解释是什么,因为我仍然很难理解网络上的解释。
这很可能是更适合于http://programmers.stackexchange.com/ – 2013-04-29 17:55:17
其实,这个问题将是programmers.se一个糟糕的配合比stackoverflow。 – comingstorm 2013-04-29 20:52:27
如果明显更多,怎么能只有'4'点? – mikemaccana 2015-06-16 09:25:19