1

如何检查多边形是凹的还是凸的?使用openGL。我将点作为 .txt 文件的输入,然后用这些点绘制一个多边形,然后问题就来了。我需要一种算法来检测多边形的类型。凹或凸。

void drawPoints() {
glClear(GL_COLOR_BUFFER_BIT); //Clear display window.
if (points.size()<2) {
   glPointSize(3.0);
   glBegin(GL_POINTS);
}
else {
   glLineWidth(3.0);
   glBegin(GL_LINE_LOOP);
}


   for (int i = 0; i<(int)points.size(); i++) {
   Point& p_i = points[i];
   glVertex2f(p_i.GetX(), p_i.GetY());
}



glEnd();
glFlush(); //Process all OpenGL routines as quickly as possible.

}

4

1 回答 1

2

如何检查多边形是凹的还是凸的?

如果在任何两个顶点之间绘制的任何线都没有出现在多边形(填充部分)之外,则多边形被定义为凸面。这是对集合凸性定义的概括。

那么如何测试呢?通常的方法是确定多边形的凸包(例如使用Gift Wrapping 算法),然后测试多边形的所有边是否恰好与其凸包重合。

使用 OpenGL

不是。OpenGL只是绘制东西。它不适用于处理几何图形(超出绘制几何图形所需的内容)。

于 2016-08-30T18:28:39.013 回答