这就是我目前正在做的:分离轴定理和Python
创建4个垂直于2个矩形的4个边的轴。由于它们是矩形,我不需要为每条边生成一个轴(正常)。
我然后循环我的4个轴。
所以对于每个轴: 我得到矩形的每个角落到轴上的投影。 有2个列表(数组)包含这些投影。每个矩形一个。 然后我得到每个投影和轴的点积。这会返回一个标量值 ,可用于确定最小值和最大值。
现在2个列表包含标量而不是向量。我对列表进行排序,以便轻松选择最小值和最大值。如果框B的最小值> =框A的最大值或框B的最大值B < =框A的最小值,那么在该轴上不存在碰撞并且没有碰撞。
此时函数完成并循环中断。
如果这些条件都从未见过的所有的轴,然后我们有一个碰撞
我希望这是做它的正确途径。
的Python代码本身可以在这里http://pastebin.com/vNFP3mAb
我有问题是,上面的代码不起作用。即使在没有碰撞的情况下,它也会始终检测到碰撞。我输入的内容正是代码的功能。如果我错过了任何步骤,或者只是不了解SAT如何工作,请告诉我。
这是什么问题? – 2011-05-16 06:02:16
对于更一般的凸多边形,我们会考虑与两个多边形的边平行*的潜在分离轴,但由于您具体处理矩形,所以在这种情况下要求垂直于(或正常)轴以边缘。 – hardmath 2011-05-16 09:26:49
我遇到的问题是上面的代码不起作用。即使在没有碰撞的情况下,它也会始终检测到碰撞。对不起,不清楚。我将编辑我写的内容,以便更清楚。 – 2011-05-16 17:15:07