繁体   English   中英

二维多边形碰撞检测

[英]2D Polygon Collision Detection

有没有人知道一种简单的方法来检查两个多边形,特别是矩形是否发生碰撞? 我发现了一种简单的方法,通过检查两个矩形上的任何线是否发生碰撞来看两个是否触摸,但如果一个多边形在另一个中,则无法工作。 有没有人知道更有效的方法来做到这一点或只是一种有效的方式?

此外,有人可以给我一个公式或类似的东西,而不仅仅是你对这个主题的想法。

谢谢

查找分离轴定理。 有一个教程在这里

它快速,优雅,强大,不太硬,并且拥有大量资源。

查看http://www.metanetsoftware.com/technique/tutorialA.html

在开发我自己的碰撞检测程序时,该站点无限地帮助了我。 根据可用的处理能力,您可以在碰撞准确性方面做任何您想要的事情。 从最少的处理器密集开始:

1)包边盒:适用于矩形形状,可快速启动。 您需要知道的是对象的(x,y)位置及其宽度和高度。

2)分离轴定理(SAT):能够处理更复杂的形状并且非常直观。

3)具有Voronoi区域的SAT(VR):使用关于任何给定多边形的顶点最接近的信息以便减少计算的总数。

以上所有内容都在上述链接中进行了深入解释。 应该注意,到目前为止,所提到的方法对凸多边形最有效。 如果你想进入荒谬的准确度水平,你就会开始进入像位图测试这样的事情,这种测试非常缓慢而且对于几乎任何东西来说都是过度杀戮。

有几种方法,简单就是检查X或Y边界是否存在和重叠。 然而,这仅适用于与轴对齐的矩形。

有边界检查,是一个对象的角落,其中包含另一个对象的边界。

从那里碰撞检测变得更加先进。 检查是否有一条线可以在它们之间以任何方向绘制等等。

例:

矩形A.

左上角(x,y)。 宽度,高度。

矩形B

左上角(x1,y1)。

条件

(x> = x1)和(x <= x1 +宽度)=> x轴的碰撞。 对于y轴,这与y和y1以及高度相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM