分离轴定理只沿一个轴的MVT

4
我在计算沿着一个轴向的3D穿透向量时遇到了困难。我已经实现了SAT并且它可以工作。我想计算需要将第一个盒子从其他盒子偏移多少,以便它始终位于其他盒子之上。有点像使用非常长的盒子进行简单的盒子投射。
我应该如何继续找到将一个对象推向指定轴向的偏移量?

enter image description here

1个回答

1
您应该已经知道这个问题的第一部分:当您将每个形状投影到每个轴上时,形状A应该有一些最小和最大标量值,假设为AMINAMAX,形状B也是如此(BMIN/BMAX)。
如果物体在某个轴上“表面上”发生碰撞,它们的投影会重叠,意味着AMIN < BMIN < AMAX < BMAXBMIN < AMIN < BMAX < AMAX。让我们假设第一个情况。 AMAX-BMIN的值是移动任一形状以使它们接触所需的距离,并且正在测试的轴提供了方向。
通常,当遍历所有轴时,跟踪最小值及其对应的轴,并且这成为未碰撞形状所需的向量(如果您想要搜索,则通常称为“最小位移向量”)。

如果您想要将它们朝特定方向移动,只需存储与该特定轴对应的值,这就成为您的位移向量(然后将其添加到一个形状的位置以使它们分离)。

我强烈建议您搜索“最小位移向量 sat”并查看前几个链接,特别是这个链接:http://www.dyn4j.org/2010/01/sat/。它有点复杂,但这就是我学习SAT的全部知识来源。

编辑...我错过了一部分。如果您想要沿一个轴(例如您的示例中的垂直轴)移动形状,基于从另一个轴(底部框长边的法线)获得的位移向量,则需要将位移向量投影到所需的(归一化)轴上(使用点积)以获得正确的距离,然后与所需轴相结合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接