我试着理解与无穷大重叠的盒子是如何工作的
为什么下面的例子不起作用。它工作正常,除非我尝试引入两个无限值。
这个例子应该返回true。
SELECT box '((1,1),(infinity, 1))' && box '((2, 1),(infinity, 1))' AS overlap;
overlap
---------
f
以下两个例子
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 :(得分:0)
我问过postgresql buglist:
汤姆小巷给了我这个回答:对此的测试涉及
FPge(box1->high.x, box2->high.x)
其中FPge定义为
#define FPge(A,B) ((B) - (A) <= EPSILON)
当两个high.x值都是无穷大时,你有无穷大减去无穷大, 这在IEEE算术中产生NaN,因此与epsilon的比较来了 出错。
一般来说,我认为我们不承诺涉及几何操作 无限端点将表现得很清醒。可能有一大船 除了这个之外需要在我们之前修复的角落案件 可以考虑支持的案例。