javascript – 檢測陣列中的一組點是複合多邊形的頂點是以順時針還是逆時針順序定義?
與答案,它的作品很棒!
我正在製作一個program (可以自由嘗試),讓使用者繪製多邊形,然後進行三角化.他們可以點選新增頂點並按Enter鍵三角測量.無論如何,只要我告訴它是否以順時針或逆時針方式繪製點,演算法就可以正常工作(現在我將其設定為僅使用順時針多邊形).我一直試圖將這個數字計算出來,但不知道如何確定點是順時針還是逆時針.嘗試使用前面提到的程式繪製形狀,以獲得更好的想法,您可以體驗到我所說的更好,我可以嘗試解釋它.
這些點是如何定義的:
function Point(x, y) { this.x = x; this.y = y; } var vertices = []; // Called on click function addPoint(mouseX, mouseY) { vertices.push(new Point(mouseX, mouseY)); }
這是順時針多邊形的影象:
這是一個逆時針多邊形的影象:
如果你能幫我弄清楚如何確定“順時針”的點數,我將非常感激!
function polygonArea() { var area = 0; for (var i = 0; i < vertices.length; i++) { j = (i + 1) % vertices.length; area += vertices[i].x * vertices[j].y; area -= vertices[j].x * vertices[i].y; } return area / 2; } var clockwise = polygonArea() > 0;
http://stackoverflow.com/questions/14505565/detect-if-a-set-of-points-in-an-array-that-are-the-vertices-of-a-complex-polygon