Javascript AABB分离轴定理,求重叠深度

Javascript AABB分离轴定理,求重叠深度,javascript,collision-detection,game-physics,Javascript,Collision Detection,Game Physics,我想检测到与aabb的碰撞。我想要重叠量,穿透深度,这样我就可以用这些信息将它们分开 我试图理解下面的代码,在我的情况下,它会产生错误的结果:例如: 对于aabb[x,y,宽度,高度],[0,780,60,60]和[0,606,120,240],它产生xOverlap 60,yOverlap-23,而应该是yOverlap 6 /* *碰撞流形 * https://gamedevelopment.tutsplus.com/tutorials/how-to-create-a-custom-2d-

我想检测到与aabb的碰撞。我想要重叠量,穿透深度,这样我就可以用这些信息将它们分开

我试图理解下面的代码,在我的情况下,它会产生错误的结果:例如:

对于aabb[x,y,宽度,高度],[0,780,60,60]和[0,606,120,240],它产生xOverlap 60,yOverlap-23,而应该是yOverlap 6

/*
*碰撞流形
* https://gamedevelopment.tutsplus.com/tutorials/how-to-create-a-custom-2d-physics-engine-the-basics-and-impulse-resolution--gamedev-6\
331#::~:text=冲突%20分辨率%20是%20动作,允许%20它们%20到%20保持%20相交。&text=后面的%20想法%20脉冲%20分辨率\
解决方案,到%20分离%20对象%20发现%20冲突。
*/
函数aabbvsaabb(a,b){
让正常的,,
穿透力;
设n=[b.pos[0]-a.pos[0],b.pos[1]-a.pos[1];
设aExtent=a.width/2,
b延伸=b.宽度/2;
让我们来看看,尤弗拉普;
xOverlap=aExtent+bExtent-Math.abs(n[0]);
xOverlap=Math.min(xOverlap,Math.min(a.width,b.width));
如果(xOverlap>0){
aExtent=a.高度/2,
b延伸=b.高度/2;
yOverlap=aExtent+bExtent-Math.abs(n[1]);
yOverlap=Math.min(yOverlap,Math.min(a.height,b.height));
如果(yOverlap>0){
if(xOverlap控制台日志(歧管)???函数返回
60,-24
not
60,-23
,对于重叠not
60,6
,正确的结果应该是
60,60
。此外,SAT用于检测碰撞,而不是用于碰撞分辨率。碰撞分辨率至少需要一个运动矢量,如果没有运动矢量,就不可能知道如何正确地将矩形分开。@Blindman67您不一定需要运动矢量。只需重叠即可使其工作。它不会非常精确(特别是在高速下),但也不是不可能。@Lucaschabbannier??碰撞需要移动,否则是包装问题。即使在低速情况下,如果两个角向左重叠1个像素,向下重叠2个像素,应该向上还是向右重叠?如果你不知道它是从哪里来的解决碰撞是一个猜测游戏。最好是随机解决碰撞,以避免系统误差在猜测时被放大。如果没有运动矢量,就不可能知道,猜测也不符合知道的条件,@Blindman67是的,这是一个猜测游戏,在大多数情况下都足够准确。显然,运动矢量是解决碰撞所必需的。但是没有它,你可以足够准确地检测碰撞。@Blindman67哦,糟糕,我没看到你只是在谈论分辨率。???函数返回
60,-24
not
60,-23
,对于重叠not
60,6
,正确的结果应该是
60,60
。此外,SAT用于检测碰撞,而不是用于碰撞分辨率。碰撞分辨率至少需要一个运动矢量,如果没有运动矢量,就不可能知道如何正确地将矩形分开。@Blindman67您不一定需要运动矢量。只需重叠即可使其工作。它不会非常精确(特别是在高速下),但也不是不可能。@Lucaschabbannier??碰撞需要移动,否则是包装问题。即使在低速情况下,如果两个角向左重叠1个像素,向下重叠2个像素,应该向上还是向右重叠?如果你不知道它是从哪里来的解决碰撞是一个猜测游戏。最好是随机解决碰撞,以避免系统误差在猜测时被放大。如果没有运动矢量,就不可能知道,猜测也不符合知道的条件,@Blindman67是的,这是一个猜测游戏,在大多数情况下都足够准确。显然,运动矢量是解决碰撞所必需的。但是没有它,你可以足够准确地检测碰撞。@Blindman67哦,糟糕,我没看到你只是在谈论分辨率。