2
這兩行是有效的點,但是當我運行lineIntersects方法時,我將「true」作爲返回值,是否有人知道發生了什麼或者這是一個錯誤?這裏是documentation link,這裏是source,當這可能失敗時,它們都沒有提到特殊情況。Java Line2D linesIntersect broken
import java.awt.geom.*;
public class Test {
public static void main(String[] args) {
// x1, y1, x2, y2
Line2D l1 = new Line2D.Double(1.0, 1.0, 1.0, 1.0);
Line2D l2 = new Line2D.Double(2.0, 2.0, 2.0, 2.0);
System.out.println(l1.intersectsLine(l2)); // true
}
}
FYI我運行Java版本「1.8.0_74」
此外,Java的Line2D類接受「線段」,根據定義,它使用兩個不同的點形成。儘管如此,我仍然認爲java做了一個馬虎的工作讓這個邊緣案例得以實現。 –
@ will.fiset真的他們所做的錯誤都是未能記錄退化段的未定義行爲。精確的浮點比較幾乎是無用的,而做任何基於epsilon的計算都相當昂貴,並且不可能幫助大多數用戶。 – Gene