如何使用openGL检查Polygon是凹还是凸? 我从.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.
}
答案 0 :(得分:2)
如何检查多边形是凹还是凸?
如果对于在任意两个顶点之间绘制的任何线条,多边形被定义为凸面,则线条的任何点都不会发生在多边形的(填充部分)之外。这是对集合凸性的定义的推广。
那么你如何测试呢?通常的方法是确定多边形的凸包(例如,使用Gift Wrapping algorithm),然后测试多边形的所有边缘是否恰好与其凸包一致。
使用openGL
不。 OpenGL只是绘制的东西。它不适用于处理几何图形(超出绘制图形所需的几何图形)。