2013-09-29 123 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应用程序所使用。 –