Opengl 如何像老板一样处理精确性?
那里,, 我正在用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
x
,z
平面图中),然后我想知道一个点是在轮廓的内部还是外部。因此,我得到该轮廓的xmin
,xmax
,ymin
etymax
值(现在只是一个圆),然后我将-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会正好落在econtour
…所以我想我会通过添加一个epsilon
for(GLfloat x=getXmin()-getDelta();x<=getXmax()+2.*getDelta();x+=getDelta())
for(GLfloat y=getYmin()-getDelta();y<=getYmax()+2.*getDelta();y+=getDelta()){
...
}