加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java中两个矩形之间的碰撞检测

发布时间:2020-12-15 05:18:15 所属栏目:Java 来源:网络整理
导读:我有两个矩形,红色矩形(可以移动)和蓝色矩形. 两者都有:x,y,宽度,高度. 当蓝色和红色矩形之间发生碰撞时,如何用Java等编程语言说? 解决方法 if (RectA.X1 RectB.X2 RectA.X2 RectB.X1 RectA.Y1 RectB.Y2 RectA.Y2 RectB.Y1) 假设您有Rect A和Rect B.证明是
我有两个矩形,红色矩形(可以移动)和蓝色矩形.
两者都有:x,y,宽度,高度.

当蓝色和红色矩形之间发生碰撞时,如何用Java等编程语言说?

解决方法

if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1 &&
    RectA.Y1 < RectB.Y2 && RectA.Y2 > RectB.Y1)

假设您有Rect A和Rect B.证明是矛盾的.四个条件中的任何一个都保证不存在重叠:

Cond1. If A's left edge is to the right of the B's right edge,- then A is Totally to right Of B
Cond2. If A's right edge is to the left of the B's left edge,- then A is Totally to left Of B
Cond3. If A's top edge is below B's bottom edge,- then A is Totally below B
Cond4. If A's bottom edge is above B's top edge,- then A is Totally above B
So condition for Non-Overlap is

Cond1 Or Cond2 Or Cond3 Or Cond4

因此,重叠的充分条件恰恰相反(De Morgan)

不是Cond1而不是Cond2而不是Cond3而不是Cond4
这相当于:

A's Left Edge to left of B's right edge,and
A's right edge to right of B's left edge,and
A's top above B's bottom,and
A's bottom below B's Top

注1:很明显,同样的原则可以扩展到任意数量的维度.
注2:计算一个像素的重叠也应该是相当明显的,改变<和/或>在该边界上与< =或a> =.

如果您很难想象它的工作原理,我在silentmatt.com/intersection.html上做了一个示例页面,您可以在其中拖动矩形并查看比较.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读