2013-09-29 126 views
0

我需要用顏色填充任意區域。我有幾個座標點(點數> 2)。 (我應該通過鼠標點擊 - >隨機點來獲得積分)。因此,測試與色彩填充我用一些隨機點用顏色填充隨機區域

glBegin(GL_POLYGON); 
    glVertex2f(200.0/WIDTH, 300.0/HEIGHT); 
    glVertex2f(300.0/WIDTH, 100.0/HEIGHT); 
    glVertex2f(500.0/WIDTH, 400.0/HEIGHT); 
    glVertex2f(400.0/WIDTH, 200.0/HEIGHT); 
glEnd(); 

但結果並不像它應該是 enter image description here

我知道這點應該是在某些特定的順序 - 但如何申請它隨機點?

+0

繼座標之後,這個數字恰好是*它應該是什麼。這是一個摺疊的矩形;兩個底部「點」是兩個相對的角落,並且對角線「摺疊」是頂部線。鑑於您的意見,很難再次猜測您的意思。天鵝?宇宙飛船? – usr2564301

回答

4

您需要對所有頂點進行排序,以便按照順序繪製凸多邊形。這實際上是計算幾何中的一個主題:convex hull

一個簡單的算法是,您首先對所有頂點進行相對於x座標的排序,然後查找每個x座標值的最頂端和最底端頂點。然後,您可以選擇一個最左邊的頂點並順時針旋轉到最右邊的頂點(始終選擇最上面的頂點),然後繼續並返回到初始頂點(始終選擇最底部的頂點)。

+0

您也可以在大多數提供OpenGL的平臺上使用GLU tessellator實用程序。在我自己實現delaunay三角剖分之前,我在D3D項目中使用了GLU tessellator,它可以被許多非OpenGL應用程序所使用。 –