gpt4 book ai didi

algorithm - 精确检查两个具有双坐标的矩形是否相交

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:10:34 24 4
gpt4 key购买 nike

我正在玩 hitboxes 并最终得到以下数据:

final double targetSmallestX = targetCenter.getX() - targetHalfWidth;
final double targetSmallestY = targetCenter.getY() - targetHalfHeight;
final double targetHighestX = targetCenter.getX() + targetHalfWidth;
final double targetHighestY = targetCenter.getY() + targetHalfHeight;
final double sourceSmallestX = sourceCenter.getX() - sourceHalfWidth;
final double sourceSmallestY = sourceCenter.getY() - sourceHalfHeight;
final double sourceHighestX = sourceCenter.getX() + sourceHalfWidth;
final double sourceHighestY = sourceCenter.getY() + sourceHalfHeight;

我想做的是检查给定的两个矩形 targetsource 是否相互交叉。可以这样做

Rectangle target = new Rectangle(targetSmallestX, target.width, targetSmallestY, target.height);
Rectangle source = new Rectangle(sourceSmallestX, source.width, sourceSmallestY, source.height);
target.intersect(source);

但这需要我使用整数。
对于这样一个看似简单的任务,我想出的所有算法似乎都太长太复杂了。有没有人对此有一个聪明的方法?

编辑:
当前方法

(targetSmallestX < sourceSmallestX + this.width)
&& (sourceSmallestX < (targetSmallestX + target.width))
&& (targetSmallestY < sourceSmallestY + this.height)
&& (sourceSmallestY < targetSmallestY + target.height);

此检查是否留下任何可能无法正常工作的星座?

最佳答案

在 Java 中,您可以使用 java.awt.geom.Rectangle2D 来表示具有浮点精度的坐标。准确的说,它的内部类java.awt.geom.Rectangle2D.Double是用double来表示坐标的。

Rectangle2D target = new Rectangle2D.Double(targetSmallestX, targetSmallestY, target.width, target.height);
Rectangle2D source = new Rectangle2D.Double(sourceSmallestX, sourceSmallestY, source.width, source.height);
target.intersect(source);

关于algorithm - 精确检查两个具有双坐标的矩形是否相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49960405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com