我有一系列的成千上万的四;4面的3D面。我所知道的就是坐标的四个角落.

一个子集的这些四条限定的封闭的外壳的3D形。其余四条是在里面的这个封闭的固体。

我该如何找出其中四部分的外壳及其四部分的内部?这不是性能至关重要的代码。


编辑:进一步约束在外壳的形状

  • 有没有漏洞内形状,它是一个单一的表面。
  • 它包含两个凸凹部分。
  • 我有几点是众所周知在内的外壳。
有帮助吗?

解决方案

这可能很难实现,如果你的状态自相交,但是如果你能找到一个四人,你知道的就是上面(可能是一个远离心)然后映了同心圆的四周围。然后找到一个连续的环的四边形之外,等等,直到最终在"相对"的一面。如果你的四边形的相互交叉,或者内部互连,那么就更加困难。我想试试打破除那些交叉,然后找到所有可能的光滑的表面,并且挑选一个具有最大内部的体积。

其他提示

这个怎么样?

计算正常的矢量的四(叫这个"当前"四).做一个交叉点测试,矢量的所有剩余的四边形。如果它相交另一个四人中的积极部分的矢量你知道当前的四是内部的四。重复用于所有剩余的四边形。

这个假设的四边形"面子"向外。

考虑,所有的四边形的生活在一个大型的密封盒。挑一个四。做光线追踪;对待这四作为一个光源,并享有所有其他圣城作为反射性的和模糊的,在那里碰到一辆四轮会发光在所有方向,从表面上,但是不在身边的角落。

如果没有光线打在外部框之后的所有节点有机会被击中,对待这四人作为内部。

如果这是凸的、或内部的四条不同的边外部的四边形,还有更简单的方式。

它可以做得相当容易,如果形状的凸出。当形状是凹它是更加困难。

在凸情况下找到心通过计算的平均水平的所有要点。这给一点,是在内政部的下列财产拥有:

如果项目四射线 心的每个角落的一个四你 定义一个金字塔的切成两部分, 一个部分包含空间内 形状和其他部分定义 空间可能是外部来的 形状。

这两卷给你一个判决过程中检查四是在边界或没有。如果任何一点从另一个四发生在外面的体积,然后四,是没有边界上的和可丢弃,作为一个内部的四。

编辑:只看到你的澄清上文。在困难情形的形状是凹然后你需要的一两件事情;

  1. 一个说明(参数设置)的形状,你可以用它来选择四边形,或
  2. 一些其他财产,例如所有的边界四是连续的

进一步的编辑:只是意识到你所描述的将是一个凹船体的要点。尝试寻找一些结果 这个搜索页面.

你可能可以使问题更容易通过减少数量的四边形,你要处理的。

你知道这些的四边形成一个封闭的外壳。因此,那些四轮车是连接在他们的边缘。如果三个相互邻近的边缘一个四人(即,边形成一个封闭循环)的边缘重叠的另一个四人,然后将这四边形可能是一个壳部分(这些相互邻近的边缘作为边界的一个2D区域;我们呼吁该地区的"相连接的脸"之四).列出的这些"壳候选人"。现在,看看这个列表并扔出任何候选人具有边缘,不会重叠的另一个候选人(即,边缘重叠的边缘一个四,是不是在列表)。重复这个过程中剔除,直到你不再能够消除任何四边形。你有什么左边的应该是你的外壳。创建一个"非壳四边形"清单包含所有四不在"外壳"列表。

绘制边界箱(或者领域,椭圆形,等等)周围的这个外壳。现在,你看过你的表非壳四条,扔出任何四,撒谎 外面 边界地区。这些都是绝对不在的内部。

把剩下的非壳四边形。这些可能或不可能在内部的形状。对于每个这四画线垂直的四人从该中心的每一面,结束对面的边界的形状。跟踪每条线和计算有多少时间线的十字架,通过"连接面对"四在你的外壳的名单。如果这个数是奇数,则这一折点位于内部的形状。如果是甚至顶点是外部。你可以确定是否四是内部或外部,基于是否其顶点是内部或外部。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top