Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个问题在谷歌或论坛上没有找到答案,因此决定在这里寻求帮助。
我是一位经验丰富的程序员,在各种平台上取得了许多成功,但直到现在我才使用/需要很多数学。
现在我需要知道如何构建一个接收 5 个点(4 面金字塔)数组和一个向量的函数。问题是这个 3d 矢量是否位于金字塔内部。
该函数最终将用(单声道)C# 编写,但如果您有其他语言的提示或代码,或者您可以帮助使用简单的数学,这也绝对可以。
向量从不在任何东西内部。我猜你的意思是你有一个 3D 点,而不是 3D 矢量。
在这种情况下,一个简单的解决方案(适用于任何凸多面体)是在考虑金字塔的每个面时检查您的点是否在正确的半空间上。
具体来说,在金字塔的第一个面上取两个向量(例如,两条边)并形成第三个向量,其中包含该面上的一个点(例如,一个顶点)和要测试的点。使用混合积的符号(即,取两条边的叉积,得到一个与金字塔面正交的向量,并用点积检查该法线是否与第三个向量的方向相同),你可以确定你的观点在哪一边。
对所有面重复该过程可以得出结论。