Math 如何计算两个AABB之间的Minkowski差(没有向量数学)?

Math 如何计算两个AABB之间的Minkowski差(没有向量数学)?,math,language-agnostic,geometry,collision-detection,Math,Language Agnostic,Geometry,Collision Detection,我正在实施这个计划。此特定库应处理轴对齐框(AABB)。我想在这个版本上开始跟踪快速移动的盒子。我认为计算两者之间的闵可夫斯基差异将是一个很好的起点 当我说明可夫斯基差分时,我指的是中描述的几何运算 问题是:这里描述的过程和算法非常通用。它使用相当高级的向量数学来计算任意两个多边形的MD 就我而言,我有AABBs。考虑到它们的数值简单性,该库到目前为止还不需要向量概念——例如,我不需要计算单点积。如果可能的话,我希望保持这种状态 所以我的问题是: 给定两个AABB的顶部、左侧、宽度和高度({t1

我正在实施这个计划。此特定库应处理轴对齐框(AABB)。我想在这个版本上开始跟踪快速移动的盒子。我认为计算两者之间的闵可夫斯基差异将是一个很好的起点

当我说明可夫斯基差分时,我指的是中描述的几何运算

问题是:这里描述的过程和算法非常通用。它使用相当高级的向量数学来计算任意两个多边形的MD

就我而言,我有AABBs。考虑到它们的数值简单性,该库到目前为止还不需要向量概念——例如,我不需要计算单点积。如果可能的话,我希望保持这种状态

所以我的问题是:

给定两个AABB的顶部、左侧、宽度和高度(
{t1、l1、w1、h1}
{t2、l2、w2、h2}
),我如何计算它们的MD(如果可能的话,不需要向量数学)


只要玩一下假人碰撞检测的小部件,我几乎可以肯定MD宽度将是一个宽度
w1+w2
和高度
h1+h2
的框。但是我不知道如何计算它的上角或左角。

两个轴对齐矩形{t1,l1,w1,h1}和{t2,l2,w2,h2}的闵可夫斯基差本身就是一个轴对齐矩形:

l = l1 - l2 - w2
t = t2 - t1 - h1
w = w1 + w2
h = h1 + h2
下面是一个简短的javascript演示,演示了这一点。可以拖动两个矩形中的任意一个。重叠时,它们会改变颜色

演示:

代码:


我怀疑这是件简单的事情,但没有这么简单。谢谢!顺便说一句,我忘了提到你创建js演示有多棒。每个读到这个答案的人都应该为之+1。对于人类来说,快速(和简单)做,通常意味着机器做得快。由于我们需要一些非常快速的冲突,我们可以期望它应该是简单的xDI感觉这个Javascript示例是错误的,因为该页面上的Y轴是颠倒的。即使通过翻转其中一个盒子来使用明可夫斯基和,也会得到不同的结果。但我不能证明它100%是错的,也许有人比我更愿意验证这一点。现在,这是我能找到的唯一的计算示例源,所以我没有其他东西可以测试我的实现。我同意Chris的观点。在该javascript示例中,上侧和下侧是反向的。至少就我对闵可夫斯基差异的了解而言。尽管如此,碰撞检测仍然有效,因为它的执行方式并不重要。