Java 为什么光滑的2D点不与矩形相交?

Java 为什么光滑的2D点不与矩形相交?,java,slick2d,Java,Slick2d,当我执行这段代码时: Point p = new Point(1,1); Rectangle r = new Rectangle(0 ,0 , 10 ,10); if(p.intersects(r)){ System.out.println("Collided"); } 它从不碰撞。为什么会这样 两个对象都是 org.newdawn.slick.geom 实现,而不是标准的Java实现,这是一个好问题。为了找出为什么我做了一些研究 Point

当我执行这段代码时:

    Point p = new Point(1,1);
    Rectangle r = new Rectangle(0 ,0 , 10 ,10);

    if(p.intersects(r)){
        System.out.println("Collided");
    }
它从不碰撞。为什么会这样

两个对象都是

org.newdawn.slick.geom


实现,而不是标准的Java实现,这是一个好问题。为了找出为什么我做了一些研究

Point p = new Point(0,0);
System.out.println(p.closed()); // TRUE
System.out.println(p.getPointCount()); // 1, logically
然后,我在网上搜索二维回购协议。我认为这是它不起作用的原因:

    boolean result = false;
    float points[] = getPoints();  // Get all points of our shape
    int length = points.length;  // count them. here length==1

    if (!closed()) {
        length -= 2;  // as we see the point is a closed shape, here length=-1
    }
    for(int i=0;i<length;i+=2) {  // Does not even enter the complicated work because length == -1
        // Complicated thing to test if intersect with a lot off points
    }
    return result; // here return false
boolean结果=false;
浮点点[]=getPoints();//获取形状的所有点
int length=points.length;//数一数。此处长度==1
如果(!closed()){
length-=2;//正如我们看到的,该点是一个闭合形状,这里length=-1
}

对于(int i=0;i你认为它应该是什么?我的假设是,当两个形状相交时,intersects方法返回true。不是这样吗?可能会有所帮助,它解释了碰撞检测背后的基本理论。在你的情况下,你的点没有任何边(显然).我的猜测是,该方法没有任何东西可与矩形进行比较。->您是否尝试切换矩形和点?