如何检测图形和框之间的交集

时间:2021-03-25 16:34:58

标签: java math geometry bounding-box

我有一个图形和一个玩家的边界框,我需要检测它们是否相交。 到目前为止我已经有了这个方法:

public boolean collides(int xOffset, int yOffset, Entity entity) {
    return points.stream().anyMatch(point -> {
        int minX = entity.getX() - xOffset,
                minY = entity.getY() - yOffset,
                maxX = minX + entity.getWidth(),
                maxY = minY + entity.getHeight();

        if (point.x >= minX && point.x <= maxX) {
            return true;
        }return false;
    });
}

此方法检查图中是否至少有一个点包含在框中。

private void generateBridge(Point[] points) {
    Dimension size = getSize(points);

    for (Point point : points) {
        int pixelX = point.x, pixelY = point.y;
        this.points.add(new Point(pixelX + x, pixelY + y));
    }

    this.width = size.width;
    this.height = size.height;
}

此方法获取图形的所有点并将它们放入列表。 “points”数组是 Function 的输出。但是这样做并不好。有什么好的方法可以检测到这个交叉点吗?

0 个答案:

没有答案