它將返回:
false
java.awt.geom.Rectangle2D$Double[x=10.0,y=10.0,w=0.0,h=20.0]
有了這個代碼:
Line2D.Double line2d = new Line2D.Double(10, 10, 10, 30);
Rectangle2D.Double rect2d = new Rectangle2D.Double(0, 0, 100, 100);
boolean intersect = line2d.getBounds2D().intersects(rect2d);
System.out.println(intersect);
System.out.println(line2d.getBounds2D());
雖然,這是沒用的,說一個線爲1個像素,因爲它不能使用Line2D.Double
其他方式。 事實上,對於Java而言,這條垂直線作爲0像素寬度邊界,這就是爲什麼它不會與任何其他形狀相交的原因。使用非垂直和非水平線時,其範圍相交。
不要使用邊界來計算交集,而是直接的形狀:
boolean intersect = line2d.intersects(rect2d);
您可以檢查RectangularShape.intersects() Javadoc獲得此方法的計算交集的更多信息。
來源
2014-03-26 22:16:31
xav
你試過了嗎? –