Opengl 如何像老板一样处理精确性?

Opengl 如何像老板一样处理精确性?,opengl,floating-accuracy,Opengl,Floating Accuracy,那里,, 我正在用opengl绘制一个轮廓(在x,z平面图中),然后我想知道一个点是在轮廓的内部还是外部。因此,我得到该轮廓的xmin,xmax,yminetymax值(现在只是一个圆),然后我将-delta添加到每个最小值,将+delta添加到每个最大值 然后我这样做: for(GLfloat x=getXmin()-getDelta();x<=getXmax()+getDelta();x+=getDelta()) for(GLfloat y=getYmin()-getDelta();y

那里,, 我正在用opengl绘制一个轮廓(在
x
z
平面图中),然后我想知道一个点是在轮廓的内部还是外部。因此,我得到该轮廓的
xmin
xmax
ymin
et
ymax
值(现在只是一个圆),然后我将
-delta
添加到每个最小值,将
+delta
添加到每个最大值

然后我这样做:

for(GLfloat x=getXmin()-getDelta();x<=getXmax()+getDelta();x+=getDelta())
for(GLfloat y=getYmin()-getDelta();y<=getYmax()+getDelta();y+=getDelta()){
...
}

for(GLfloat x=getXmin()-getDelta();x您所谓的“delta”如果你的测试是相等的,你就需要加上+/-这个值作为公差。你的问题是在圆圈内部或外面的一个点,但是实际上不能考虑第三个例子,这个点在圆的周长上。如果你没有足够的能量,ε检验就派上用场了。精度:将一个点清楚地识别为内部或外部,然后将其分类为圆上的点。顺便说一句,epsilon的良好值通常小于0.001,增加该值可能会产生相反的效果。@AndonM.Coleman同意这一观点。然而,我认为OP的
getDelta
实际上是
getStep
,在他的presenting code没有考虑
epsilon
。解决方法是简单地在迭代的上界添加一个epsilon。starrify有权我没有添加
epsilon
,因为我认为我的
delta
也可以作为
epsilon
工作。我没有意识到在这种情况下,我的delta会正好落在e
contour
…所以我想我会通过添加一个
epsilon
for(GLfloat x=getXmin()-getDelta();x<=getXmax()+2.*getDelta();x+=getDelta())
for(GLfloat y=getYmin()-getDelta();y<=getYmax()+2.*getDelta();y+=getDelta()){
...
}