Tra*_*isG 4 collision-detection
我正在使用这里描述的算法的实现:http://www.codezealot.org/archives/55
使用这个实现,当我想找到两个碰撞矩形的最小位移矢量时,算法有时会(在两种情况中的一种情况下准确)给出错误的"方向",其中一个矩形需要被推动才能获得远离它碰撞的矩形.它将产生与它应该进入的方向完全相反的方向.
这是因为(当然)矩形的两个相对边缘当然在数学上相似,因此产生相同的结果.
这是Java中算法的实现:
您可以假设Vector2f,Projection2D等正常运行并生成正确的值.顺便说说,
我正在使用左手法线,因为多边形是逆时针组装的.原则上,这应该足够了,因为左手法线总是指向多边形.问题在于,由于矩形的相对边缘的两个重叠将完全相同,因此算法将简单地使用第一个及其对应的轴.
谢谢你的帮助!
Tra*_*isG 10
嘿,我忘了我刚才创建了这个问题,所以我现在要回答它以防其他人遇到同样的问题:
解决方案是简单地转动位移矢量(乘以-1),如果它指向需要推开物体的形状.
要确定位移矢量是否指向形状,首先必须通过相互减去它们的中心来获得从对象a到对象b的大致方向.之后,检查位移矢量和刚刚创建的方向(a,b)矢量之间的点积.如果它> 0,则位移矢量和方向(a,b)指向相同的方向,因此您需要翻转位移矢量.
| 归档时间: |
|
| 查看次数: |
2900 次 |
| 最近记录: |