0
如何使用openGL檢查多邊形是凹或凸? 我把點作爲.txt文件的輸入,並用這些點繪製一個多邊形,然後出現這個問題..我需要一個算法來檢測多邊形的類型。凹或凸。如何檢查多邊形是凹或凸?使用openGL
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.
}
我會修改最後一段。 OpenGL絕對適用於「Processing Geometry」;這是Shaders的用途。然而,在OP的情況下,確定「這種形狀是凸面還是凹面」是OpenGL的一個糟糕的應用,因爲雖然聰明地使用着色器可以解決這個問題,但是當這樣做的好處幾乎不可能通過簡單地用C++(或任何其他語言)編寫算法來迭代多邊形的頂點並檢查它的凸性,可以用更少的時間和內存來解決它。 – Xirema
@Xirema:除了幾何着色器(在某種程度上)和鑲嵌着色器(在一個非常有限的範圍內),OpenGL着色器完全集中於頂點和基元形式的單數實體,或者計算情況下的大量無形數據着色器。除了一些特殊功能(裁剪和鄰接)之外,典型的OpenGL實現具有關於幾何的零知識。着色器中的任何「幾何知識」不是來自OpenGL實現,而是程序員,寫着色器。 – datenwolf
@Xirema:我知道這對於一個唯一目的是從幾何圖形生成圖像的API來說可能看起來很奇怪,或者很怪異。但是,OpenGL擁有如此廣泛的目標受衆,任何爲其提供幾何「知識」的嘗試都只會受到限制,而不會授予希望使用該API的程序員。幾何知識由程序員或第三方提供是故意的。 – datenwolf