现在经过一些工作,我终于了解了 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 上实现了分离轴定理吗?:|