SAT 的最小平移向量在所有情况下总是正确和精确的吗?我通过迭代所有可能的轴并检查每个轴上的重叠来计算它,然后跟踪哪个轴具有最短的重叠并将其用作穿透向量。
如您所见,最小平移向量的某些计算并不总是正确的。
在这个简短的摘录中,我找到了渗透向量,我希望你们能帮助我找出问题所在:
direction = Vector.Sub(me.Verts[k-1], me.Verts[k])
axis = Vector.Normalize(Vector.Perp(direction))
min_1, max_1 = Vector.Project(me, axis)
min_2, max_2 = Vector.Project(ent, axis)
if (max_1 < min_2 or max_2 < min_1) == False:
if ((max_2 - min_1) or (max_1 - min_2)) < first_separation[0]:
if max_2 - min_1 < max_1 - min_2:
first_separation = [max_2 - min_1, axis]
else:
first_separation = [max_1 - min_2, axis]
在其他地方,我使用以下代码行来获取我的向量值:
separator, axis = first_separation
vec = [axis[0] * (separator * -1), axis[1] * separator * -1]