1

现在经过一些工作,我终于了解了 KDop 包围体是如何创建的以及碰撞是如何相交的,并且我对它们进行了工作实现。现在问题是另一个。:D

我如何相交(必须有可能,否则没有任何意义)不同 K 值的 2 K-Dop?(显然我们事先知道哪个轴被用来创建那些 2 K-Dop。)

就像我怎样才能使 DOP6 (AABB) 和 DOP14 (AABB + 切角) 相交?还是 DOP14(AABB + 切角)和 DOP26(AABB + 切角 + 切边)?

简单的方法(在具有相同 K 的 KDOP 之间)是

 public Boolean Intersects(kDOP a, kDOP b)
        {
            // TODO : How to do if the K is not the same?
            for (int i = 0; i < a.K / 2; i++)
                if ((a.Min[i] > b.Max[i]) || (a.Max[i] < b.Min[i]))
                    return false;
            return true;
        }

另一个问题是。如何在 KDOP 和说 Sphere 之间进行交集?KDOP 和胶囊?KDOP和OOB?KDOP和AABB?(如果我们知道如何处理不同的 K(因为 AABB 基本上是 DOP6),这应该会更容易)我的意思是在这些简单结构之间进行交集的常用方法是什么?

非常感谢解答!!!

编辑:从网上的一些搜索看来,分离轴是要走的路,但我找不到任何关于如何在 K-DOP 上实现它的详细信息。:P

编辑 2:有人在 KDOP 上实现了分离轴定理吗?:|

4

1 回答 1

1

如果 Ks 是不同的顺序,只需将 i 循环运行到 aK/2 或 bK/2 的最小值。

于 2010-01-30T14:34:42.937 回答