2012-05-17 32 views
0

我试图理解无限重叠框如何工作带有无限边缘坐标的重叠框

为什么下面的示例不起作用。它工作正常,除非当我尝试引入两个无限值。

这个例子应该返回true。

SELECT box '((1,1),(infinity, 1))' && box '((2, 1),(infinity, 1))' AS overlap; 
overlap 
--------- 
f 

两个exemples以下工作

SELECT box '((1,1),(4, 1))' && box '((2, 1),(infinity, 1))' AS overlap; 
overlap 
--------- 
t 


SELECT box '((1,1),(4, 1))' && box '((2, 1),(5, 1))' AS overlap; 
overlap 
--------- 
t 

所以我的问题是:是不是我做错了,或者我不明白?

回答

0

我问关于PostgreSQL的buglist:

汤姆车道给了我这样的回答:

这个测试包括

FPge(box1->high.x, box2->high.x) 

其中FPge被定义为

#define FPge(A,B) ((B) - (A) <= EPSILON) 

当两个high.x值都是无穷大时,您的无穷大减去无穷大, 它在IEEE算术中产生NaN,所以与epsilon的比较来 出错。

一般而言,我认为我们不认为我们承诺涉及无限终结点的几何操作将表现得很健全。除了这个需要修复的角落案例,我们可能会考虑支持案例 。