Dostałem ten kod w javascript, aby obliczyć nieregularny obszar wielokąta z sieci.Obliczanie obszaru poligonowego
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);
Wyniki wydaje się być poprawne. jeśli wierzchołek jest śledzony w kierunku zgodnym z ruchem wskazówek zegara, będzie pokazywał pozytywne wyniki, ale będzie ujemny, jeśli wyśleduję wierzchołek w kierunku przeciwnym do ruchu wskazówek zegara. Dlaczego to jest takie?
Jak działa ten algorytm? naprawdę chcę wiedzieć, jakie jest matematyczne wyjaśnienie, ponieważ wciąż mam trudności z zrozumieniem wyjaśnienia w sieci.
To będzie prawdopodobnie lepiej nadaje się na http://programmers.stackexchange.com/ Właściwie –
, to pytanie byłoby gorzej nadające się do programmers.se niż dla stackoverflow. – comingstorm
Jak może być tylko "4" punktów, gdy jest wyraźnie więcej? – mikemaccana