1

我有一个问题在谷歌或论坛上没有找到答案,因此决定在这里寻求帮助。

我是一位经验丰富的程序员,在各种平台上取得了许多成功,但直到现在我才使用/需要很多数学。

现在我需要知道如何构建一个接收 5 个点(4 面金字塔)数组和一个向量的函数。问题是这个 3d 矢量是否位于金字塔内部。

该函数最终将用(单声道)C# 编写,但如果您有其他语言的提示或代码,或者您可以帮助使用简单的数学,这也绝对可以。

4

1 回答 1

5

向量从不在任何东西内部。我猜你的意思是你有一个 3D 点,而不是 3D 矢量。

在这种情况下,一个简单的解决方案(适用于任何凸多面体)是在考虑金字塔的每个面时检查您的点是否在正确的半空间上。

具体来说,在金字塔的第一个面上取两个向量(例如,两条边)并形成第三个向量,其中包含该面上的一个点(例如,一个顶点)和要测试的点。使用混合积的符号(即,取两条边的叉积,得到一个与金字塔面正交的向量,并用点积检查该法线是否与第三个向量的方向相同),你可以确定你的观点在哪一边。

对所有面重复该过程可以得出结论。

于 2013-03-03T00:39:38.543 回答