顶点定义框算法中的点?

Posted

技术标签:

【中文标题】顶点定义框算法中的点?【英文标题】:Point in vertex defined box algorithm? 【发布时间】:2011-11-30 16:45:46 【问题描述】:

如果一个点位于仅由其 8 个点或由其 6 个四边形定义的 3D 框内,我将如何测试? (无法访问法线向量)

盒子由三角形组成,但每边的两个多边形是对齐的,所以可以被认为是一个四边形。

【问题讨论】:

你试过在Mathematics上问这个吗? 【参考方案1】:

您可以通过形成 6 个方形金字塔来测试这一点,以您的点为头,每个四边形的 4 个顶点为底,然后将方形金字塔的体积相加。如果体积之和等于您的盒子的体积,则该点在盒子中。如果总体积大于您盒子的体积,则它在盒子外面(总体积永远不会小于盒子体积)。

为了计算每个方形金字塔的体积,您可以将其分成两个四面体,它们的体积可以通过mix vector product 轻松计算。您也可以使用混合向量积计算盒子的体积。

【讨论】:

【参考方案2】:

假设点有一个已知的顺序,你可以计算出法线向量。无需为此类测试对它们进行标准化,因此成本并不高。如果您已经知道它是一个长方体,那么您只需要计算出两个法线,因为您可以通过叉积获得第三个法线,然后使用其他点来获得距离。显然,无论如何您都是在进行交叉生产以获得法线,所以这更多的是关于您想向谁公开哪些信息的问题。

如果这些点没有已知的顺序,那么您可能可以应用 QuickHull 的微型版本 — 从最初的三角形开始,您应该会发现您已经拥有一个真实的边缘面(在这种情况下,您可以使用该法线并在该法线的另一个极端找到相关点,再加上获得所有三个法线的相互正交性的要求),或者这一步可以为您提供至少两个真实边缘,当它们的局部点集时您会发现前面是空的。

【讨论】:

【参考方案3】:

一个疯狂的想法,也许:-

在 1x1 像素视口上设置 3d 正交投影 设置相机和近剪裁平面,使兴趣点位于近剪裁平面上 渲染盒子而不进行任何剔除 如果只渲染一个像素,则点在框内,如果渲染 0 或 2 个或更多像素,则该点在框外

【讨论】:

我会说这是一个疯狂的想法 :) 我对这类事情的深度不够,但你的答案不是做更多的工作,然后有必要使用普通的方法来确定答案老数学? 我想这取决于您已经拥有哪些光栅化设施可供您使用?它还提出了另一种线性代数方法——如果从点到无穷远的线段在任何方向上与盒子恰好相交一次,那么该点就在盒子内。如果进行光栅化,您可以通过裁剪和投影来执行该测试。

以上是关于顶点定义框算法中的点?的主要内容,如果未能解决你的问题,请参考以下文章

图论中的一些名词的定义。

图的最大匹配算法

SQL Server 的多边形算法中的点

图论中的点割集,割点是啥意思啊,看书上的定义看不懂,能不能通俗的讲解一下

拓扑排序

图论 - 二分图基本概念