所以我已經在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