2012-05-17 65 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的比較來 出錯。

一般而言,我認爲我們不認爲我們承諾涉及無限終結點的幾何操作將表現得很健全。除了這個需要修復的角落案例,我們可能會考慮支持案例 。