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();

但结果看起来并不像它应该的那样 在此处输入图像描述

我知道点应该按特定的顺序排列 - 但是如何将它应用于随机点?

4

1 回答 1

4

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

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

于 2013-09-29T19:03:21.463 回答