【发布时间】:2011-11-30 16:45:46
【问题描述】:
如果一个点位于仅由其 8 个点或由其 6 个四边形定义的 3D 框内,我将如何测试? (无法访问法线向量)
盒子由三角形组成,但每边的两个多边形是对齐的,所以可以被认为是一个四边形。
【问题讨论】:
-
你试过在Mathematics上问这个吗?
如果一个点位于仅由其 8 个点或由其 6 个四边形定义的 3D 框内,我将如何测试? (无法访问法线向量)
盒子由三角形组成,但每边的两个多边形是对齐的,所以可以被认为是一个四边形。
【问题讨论】:
您可以通过形成 6 个方形金字塔来测试这一点,以您的点为头,每个四边形的 4 个顶点为底,然后将方形金字塔的体积相加。如果体积之和等于您的盒子的体积,则该点在盒子中。如果总体积大于您盒子的体积,则它在盒子外面(总体积永远不会小于盒子体积)。
为了计算每个方形金字塔的体积,您可以将其分成两个四面体,它们的体积可以通过mix vector product 轻松计算。您也可以使用混合向量积计算盒子的体积。
【讨论】:
假设点有一个已知的顺序,你可以计算出法线向量。无需为此类测试对它们进行标准化,因此成本并不高。如果您已经知道它是一个长方体,那么您只需要计算出两个法线,因为您可以通过叉积获得第三个法线,然后使用其他点来获得距离。显然,无论如何您都是在进行交叉生产以获得法线,所以这更多的是关于您想向谁公开哪些信息的问题。
如果这些点没有已知的顺序,那么您可能可以应用 QuickHull 的微型版本 — 从最初的三角形开始,您应该会发现您已经拥有一个真实的边缘面(在这种情况下,您可以使用该法线并在该法线的另一个极端找到相关点,再加上获得所有三个法线的相互正交性的要求),或者这一步可以为您提供至少两个真实边缘,当它们的局部点集时您会发现前面是空的。
【讨论】:
一个疯狂的想法,也许:-
【讨论】: