用颜色填充随机区域

时间:2013-09-29 18:54:43

标签: c++ opengl

我需要用颜色填充任何随机区域。我有几个点有一些坐标(点数> 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

我知道点应按某种特定顺序 - 但如何将其应用于随机点?

1 个答案:

答案 0 :(得分:4)

您需要对所有顶点进行排序,以便按照顺序绘制凸多边形。这实际上是计算几何中的一个主题:convex hull

一个简单的算法是首先根据x坐标对所有顶点进行排序,然后查找每个x坐标值的最顶部和最底部顶点。然后你可以选择一个最左边的顶点并顺时针方向到最右边的顶点(总是沿着路径选择最顶端的顶点),然后继续前进并返回到初始顶点(总是选择最底部的顶点)。

相关问题