为什么";“相交线”;Java中的方法是否给我一个错误的结果?

为什么";“相交线”;Java中的方法是否给我一个错误的结果?,java,computational-geometry,rectangles,Java,Computational Geometry,Rectangles,对于Java中的个人项目,我必须确定线段是否与矩形的内部相交。我使用了java.awt.geom中的Rectangle2D.Double,但显然“intersectsLine”方法不能给出正确的结果,该方法应该完全满足我的要求 以下是示例代码: import java.awt.geom.Rectangle2D; public class test { public static void main(String[] args) { Rectangle2D.Double

对于Java中的个人项目,我必须确定线段是否与矩形的内部相交。我使用了java.awt.geom中的Rectangle2D.Double,但显然“intersectsLine”方法不能给出正确的结果,该方法应该完全满足我的要求

以下是示例代码:

import java.awt.geom.Rectangle2D;

public class test {

    public static void main(String[] args) {
        Rectangle2D.Double r = new Rectangle2D.Double(2, 7, 5, 1);
        System.out.println(r.intersectsLine(4, 8, 1, 8));
    }

}
这令人惊讶地打印出“真”。我无法理解这种行为。我检查了文档,矩形构造函数希望得到左上角的坐标,然后是宽度和高度。那么矩形“r”应该位于直线(4,8)-(1,8)的下方,这样它们就不能相交了


这是我的错误还是错误?

阅读java awt包时会说:

The X values increase to the right, and Y coordinate values increase as they go down.

坐标系向底部增加。和
2,7
构成
左上
点。因此,它将与一条从
(4,8)到(1,8)
的直线相交,该直线在矩形下方(视觉上

java.awt.geom包使用的坐标系将原点
(0,0)
放在左上角,Y值向下增加。检查以下方面的文档:

与所有Java2D API一样,该类使用一个名为用户空间的默认坐标系,其中y轴值向下增加,x轴值向右增加

矩形是使用角点坐标构建的:

  • (2,7)
    -左上角
  • (7,7)
    -右上角
  • (7,8)
    -右下角
  • (2,8)
    -左下角

这意味着您的直线与矩形在路径上相交(矩形底部边缘/直线的左侧)。

说矩形的角是
(2,7)
(7,7)
(7,8)
(7,8)和
(2,8)对吗
或者我在这里遗漏了什么?Y轴是向下->向上还是向上->向下?这很重要。不同的问题:坐标系的原点在哪里,在屏幕的底部还是右上角?高度是向上延伸还是向下延伸?如果它向上延伸,那么你的直线是相交的(它正好位于上边框上),我的意思是“左上角”,当然,因为你提到了
java.awt包
,我相信矩形是相交的,没有错误