3d矢量位于4边金字塔吗?

met*_*afa 1 3d geometry vector

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

我是一个相当经验丰富的程序员,并在各种平台上取得了很多成功,但直到现在我还没有使用/需要大量的数学.

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

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

nbo*_*eel 5

矢量永远不会放在任何东西里面.我想你的意思是你有一个3D点,而不是3D矢量.

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

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

重复所有面孔的程序可以让您得出结论.