Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenGL中搜索坐标并更改三角形颜色 我在C++中使用OpenGL进行Delaunay三角剖分。我已经设置了网格,现在我正在寻找一种方法来改变三角形的颜色,在找到它的坐标x,y后,我已经有了一个如何搜索x,y的想法,但是如何在找到它后改变三角形的颜色是我一直想做的 glColor3f(1.0, 0.5, 0.5); list<Tri*>::iterator iter; Tri* triangle; int v1, v2, v3; glBegin(GL_TRIANGLES); for(iter = triangles.begin(); iter != triangles.end(); iter++) { triangle = *iter; v1 = triangle->v[0]; v2 = triangle->v[1]; v3 = triangle->v[2]; // the part where i want to change the color: if(x[v1] == 1.06 && y[v1] == 7.28) { glColor3f(1.0f, 0.0f, 0.0f); // Red } else { glColor3f(0.0f, 1.0f, 0.0f); // Green } glVertex2f(x[v1], y[v1]); glVertex2f(x[v2], y[v2]); glVertex2f(x[v3], y[v3]); } glEnd();_C++_Opengl - Fatal编程技术网

在OpenGL中搜索坐标并更改三角形颜色 我在C++中使用OpenGL进行Delaunay三角剖分。我已经设置了网格,现在我正在寻找一种方法来改变三角形的颜色,在找到它的坐标x,y后,我已经有了一个如何搜索x,y的想法,但是如何在找到它后改变三角形的颜色是我一直想做的 glColor3f(1.0, 0.5, 0.5); list<Tri*>::iterator iter; Tri* triangle; int v1, v2, v3; glBegin(GL_TRIANGLES); for(iter = triangles.begin(); iter != triangles.end(); iter++) { triangle = *iter; v1 = triangle->v[0]; v2 = triangle->v[1]; v3 = triangle->v[2]; // the part where i want to change the color: if(x[v1] == 1.06 && y[v1] == 7.28) { glColor3f(1.0f, 0.0f, 0.0f); // Red } else { glColor3f(0.0f, 1.0f, 0.0f); // Green } glVertex2f(x[v1], y[v1]); glVertex2f(x[v2], y[v2]); glVertex2f(x[v3], y[v3]); } glEnd();

在OpenGL中搜索坐标并更改三角形颜色 我在C++中使用OpenGL进行Delaunay三角剖分。我已经设置了网格,现在我正在寻找一种方法来改变三角形的颜色,在找到它的坐标x,y后,我已经有了一个如何搜索x,y的想法,但是如何在找到它后改变三角形的颜色是我一直想做的 glColor3f(1.0, 0.5, 0.5); list<Tri*>::iterator iter; Tri* triangle; int v1, v2, v3; glBegin(GL_TRIANGLES); for(iter = triangles.begin(); iter != triangles.end(); iter++) { triangle = *iter; v1 = triangle->v[0]; v2 = triangle->v[1]; v3 = triangle->v[2]; // the part where i want to change the color: if(x[v1] == 1.06 && y[v1] == 7.28) { glColor3f(1.0f, 0.0f, 0.0f); // Red } else { glColor3f(0.0f, 1.0f, 0.0f); // Green } glVertex2f(x[v1], y[v1]); glVertex2f(x[v2], y[v2]); glVertex2f(x[v3], y[v3]); } glEnd();,c++,opengl,C++,Opengl,执行后,所有三角形均为绿色,表示未找到两点 你的坐标不太可能正好是1.06和7.28。甚至可能是不可能的,因为浮点不能准确地表示这些值,而您正在将浮点值与双常量进行比较。在任何情况下,如果不完全理解您要做的事情,您可能需要更改比较,以便在这些值周围留出一定的小范围。我已经将这些坐标与其他19个坐标一起设置了!这不是随机的……他的意思是1.06f!=1.06和7.28f!=7.28Okey不知道,谢谢你们。@0x58:另外,你们不应该像Reto指出的那个样测试浮点等式。您需要一个小的ε值来解释诸如

执行后,所有三角形均为绿色,表示未找到两点

你的坐标不太可能正好是1.06和7.28。甚至可能是不可能的,因为浮点不能准确地表示这些值,而您正在将浮点值与双常量进行比较。在任何情况下,如果不完全理解您要做的事情,您可能需要更改比较,以便在这些值周围留出一定的小范围。我已经将这些坐标与其他19个坐标一起设置了!这不是随机的……他的意思是1.06f!=1.06和7.28f!=7.28Okey不知道,谢谢你们。@0x58:另外,你们不应该像Reto指出的那个样测试浮点等式。您需要一个小的ε值来解释诸如舍入错误和无法完美表示某些数字之类的问题。所以测试x[v1]>1.06f-0.0001f&&x[v1]<1.06f+0.0001f,而不是x[v1]==1.06f。在这种情况下,ε为0.0001f,公差为+/-0.0001f,这可能相当准确。