kik*_*ito 9 language-agnostic math geometry collision-detection
我正在实现我的碰撞检测库的第二个版本.这个特殊的库应该处理轴对齐的框(AABB).我想在这个版本上开始跟踪快速移动的盒子.我认为计算两者之间的Minkowski差异将是一个很好的起点.
当我说Minkowsky差异时,我指的是碰撞检测傻瓜中描述的几何操作.
问题是:那里描述的过程和算法非常通用.它使用相当高级的矢量数学来计算任意两个多边形的MD.
就我而言,我有AABB.鉴于它们的数字简单性,到目前为止库还没有需要Vector概念 - 例如,我不需要计算单点产品.如果可能的话,我希望它保持这种状态.
所以我的问题是:
给出两个AABB的顶部,左侧,宽度和高度({t1,l1,w1,h1}和{t2,l2,w2,h2}),我如何计算它们的MD,(如果可能的话,没有得到矢量数学)?
只需在碰撞检测傻瓜上玩小工具,我几乎可以肯定MD宽度将是一个宽度w1+w2和高度的盒子h1+h2.但我不知道如何计算它的顶角或左角.
Ore*_*ner 29
两个轴对齐的矩形{t1,l1,w1,h1}和{t2,l2,w2,h2}的Minkowski差异本身就是一个轴对齐的矩形:
l = l1 - l2 - w2
t = t2 - t1 - h1
w = w1 + w2
h = h1 + h2
Run Code Online (Sandbox Code Playgroud)
以下是一个简短的JavaScript演示,以显示此操作.您可以拖动两个矩形中的任何一个.它们会在重叠时改变颜色
代码:http://jsbin.com/afojes/2/edit

