2016-11-03 86 views
1

嗨,我想執行多邊形三角測量。我瞭解簡單多邊形(凹面或凸面)的耳廓修剪方法。我被困在發現一個頂點是否是反射的。我在多個地方閱讀的內容是關於順時針和逆時針方向,我無法理解。總之,這些方向指的是什麼,請給我一些關於檢查頂點是否反射的提示。 here is the link of an article i am following:多邊形三角測量反射頂點

,這裏是公式,他們已經使用:

// Input 
    VECTOR a, b, c; // the parts of our triangle. 
    // if (b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y) > 0 
    // we are counter-clockwise 

什麼點在這裏,我無法理解。

回答

2

您的輸入多邊形在大多數情況下是連續頂點列表,它們以逆時針順序表示您的多邊形。這意味着當沿着多邊形的邊界行進時(如果沒有孔),它的內部應該位於每個穿過的邊的左側。如果想知道單個頂點是凸的還是反射的(凸的意思是小於180°的內角,否則是反射),那麼有幾種方法。最常用的是應用確定性。如果頂點形成一個左轉,這個確定給了我們一個更大的結果,這意味着三個連續的頂點a,b和c在b上形成一個凸起的角度;否則小於零。現在的公式:(b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y) > 0就是這樣做的。它將三個頂點轉換成兩個方向矢量:b-ac-b,那麼這個確定就已經是給定的公式,並告訴我們是否在b上出現了左轉或右轉。

編輯,由於在註釋的問題:

enter image description here

讓我們選擇=(2 1)中,b =(5 4),和c =(3 6)。因此,如右圖所示的方向由下式給出:s = b-a =(3 3)和t = c-b =( - 2 2)。現在det(s t)給我們s.x*t.y - t.x*s.y = 3*2 - (-2)*3 = 12 > 0。因此,如果我們站在a點,我們走到b,我們必須左轉到c。

+0

Thankyou :)晚了一秒,想通了:)反正非常感謝你花時間和幫助,它肯定使事情更加清晰 – anekix

+0

你能給一個圖形表示什麼是頂點是a,b和c是什麼。 。我想知道爲什麼我們選擇b-a和c-b – anekix