編輯:我更新了program的答案,它的效果很好!檢測數組中的一組點是否是順時針或逆時針順序定義的複合多邊形的頂點?
我正在製作一個program(隨時試用),讓用戶繪製多邊形,然後再進行三角化。他們可以點擊添加頂點並按回車鍵進行三角測量。無論如何,只要我告訴它,如果點是以順時針或逆時針方式繪製的(現在我只設置它的順時針多邊形),算法就可以正常工作。我一直在試圖弄清楚這幾天,但不知道如何確定點是順時針還是逆時針。嘗試使用前面提到的程序繪製圖形以獲得更好的想法,您可以體驗我所談論的內容,而不是嘗試解釋它。
下面是如何的點被定義:
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));
}
這裏是順時針多邊形的圖像:
這裏是逆時針方向多邊形的圖像:
如果你能幫我弄清楚如何確定點的「順時針方向」,我將非常感激!
測量每三個點之間的角度,併爲整個多邊形求和。在一個方向上,你會得到一個積極的,而在另一個方向,你會得到一個消極的總數。對應於多邊形的時鐘方向。 – TMB
剛剛發現這個問題:http://stackoverflow.com/questions/1165647/how-to-determine-if-a-list-of-polygon-points-are-in-clockwise-order接受的答案有一個類似的解決方案,但可能比我的簡單。 – kodkod