代码之家  ›  专栏  ›  技术社区  ›  sgfw

我正在实施扩展多边形算法,我不确定如何从minkowski差分上的一个点推断接触点

  •  1
  • sgfw  · 技术社区  · 9 年前

    我已经从多个来源阅读了环保署的相关信息,但在找到了与源头最接近的minkowski差异点后,它们似乎都突然停止了作用。他们中的大多数人都是这样说的 "With this information, we can then generate the local and global contact points and contact tangents," 但我不明白这是怎么可能的,更不用说怎么做了。我看不出有人是如何单独从一个差值中得出被减数和减数的,当然也不是在合理的时间内。这个问题的标准解决方案是什么?

    我希望在3D中实现这个算法,如果这改变了答案。谢谢

    1 回复  |  直到 9 年前
        1
  •  3
  •   Allen Chou    9 年前

    这里是博客文章的OP。

    这篇文章实际上讲述了如何在EPA算法的步骤8中计算接触点:

    将原点投影到最近的三角形上。这是我们最近的 指向CSO边界上的原点。计算重心 此最近点相对于顶点的坐标 最近的三角形。重心坐标是 最近三角形顶点的线性组合。线性(Linearly) 合并各个支持点(原始结果来自 单个碰撞器) 以相同的重心坐标作为系数的三角形给出 两台对撞机上的美国接触点位于各自的模型空间。我们可以 然后将这些接触点转换为世界空间。

    请允许我在这里重新表述。

    设Ca、Cb和Cc表示CSO三角形的三个顶点,CSO三角形包含CSO边界上与原点最近的点(表示为Cp)。

    计算Cp三角形的重心坐标(x,y,z)。

    x Ca + y Cb + z Cc = Cp
    

    注意,我们需要在全局空间中保留用于获得Ca、Cb和Cc的两个对象(A&B)的原始支持函数结果。设Aa、Ab和Ac表示对象A的原始支持函数结果。设Ba、Bb和Bc表示对象B的原始支持功能结果。

    Ca = Aa + Ba
    Cb = Ab + Bb
    Cc = Ac + Bc
    

    使用先前获得的重心坐标(x,y,z)来线性组合来自对象A&B、 我们可以计算两个物体上的接触点,表示为Ap和Bp:

    Ap = x Aa + y Ab + z Ac
    Bp = x Ba + y Bb + z Bc
    

    我希望这能为您澄清计算过程。