如何得到点,线与缓冲的图像或矩形相撞?

时间:2016-04-05 06:55:05

标签: java graphics collision-detection lines rectangles

我试图在某个方向上绘制一些起始位置的线,但是我想要停止线与线碰撞的点,如bufferedImage或矩形。如何得到这一点?

public Point2D[] getIntersectionPoint(Line2D line, Rectangle2D rectangle)
{ 
Point2D[] p = new Point2D[4];
    Point2D[] p = new Point2D[4];

    // Top line
    p[0] = getIntersectionPoint(line,
                    new Line2D.Double(
                    rectangle.getX(),
                    rectangle.getY(),
                    rectangle.getX() + rectangle.getWidth(),
                    rectangle.getY()));
    // Bottom line
    p[1] = getIntersectionPoint(line,
                    new Line2D.Double(
                    rectangle.getX(),
                    rectangle.getY() + rectangle.getHeight(),
                    rectangle.getX() + rectangle.getWidth(),
                    rectangle.getY() + rectangle.getHeight()));
    // Left side...
    p[2] = getIntersectionPoint(line,
                    new Line2D.Double(
                    rectangle.getX(),
                    rectangle.getY(),
                    rectangle.getX(),
                    rectangle.getY() + rectangle.getHeight()));
    // Right side
    p[3] = getIntersectionPoint(line,
                    new Line2D.Double(
                    rectangle.getX() + rectangle.getWidth(),
                    rectangle.getY(),
                    rectangle.getX() + rectangle.getWidth(),
                    rectangle.getY() + rectangle.getHeight()));

    return p;
}

我尝试过这种方法,但它不适用于旋转的矩形。另外,我不想得到一个数组,但最接近该行的开头。

1 个答案:

答案 0 :(得分:0)

但是你的矩形是定义的,你需要得到四个方面。

然后你就像你一样用你的线进行交集。

如果是这样的情况你会有很多:检查你的线路来自哪里;哪个交叉点左上方等等

很多if-cases。