【发布时间】:2020-09-15 20:12:22
【问题描述】:
假设我们将一个点定义为一个元组 三个浮点数组成,四面体由四个点组成。
假设我们有一个四面体和一个点,我们可以确定是否 点属于下面描述的解决方案的四面体 How to check whether the point is in the tetrahedron or not? 这里的关键思想是确定该点是否在四面体四个侧面的内侧。
我的问题。给定一个点和 N 个四面体,其中 N 约为 700 万,我需要确定该点在哪个四面体中。我们会关心重复测试的表现,有大量的分数。
附加信息:
-
可以使用上述方法一一检查这些四面体。但考虑到我有大量的四面体,这可能太慢了。
-
问题设置中有一个特定的点。这些四面体是 从 FEM(有限元法)问题中获得,用于求解 医学成像问题(它们构成了患者的大脑)。也许 FEM 本身与这个问题无关,但我们可以利用这些四面体彼此相邻并且在这些四面体模拟的空间中没有“洞”这一事实。
-
除了相邻的边界外,四面体没有交点。所以,这个问题应该有一个唯一的解决方案,除非在边界处,在这种情况下,可以让任何一个相交的四面体来解决我的问题。
-
四面体的输入没有特定的顺序。四面体的形状是否规则并没有规定。
关于有效解决问题的任何想法?解决这个问题首选 Python。
谢谢!
【问题讨论】:
-
1.输入时是否有四面体的顺序? (也许机器会分层扫描大脑?) 2. 我是否正确理解我们只关心一个测试的性能,而不是重复测试? (我的第一个想法是八叉树,但构建一次测试可能成本太高) 3. 四面体的形状怎么样 - 大多数是规则的或倾斜的? 4. 我会从琐碎的 (minx, miny, minz)
-
感谢您考虑这个问题。回答您的问题:在输入上没有给出四面体的特定顺序。四面体的形状是否规则并没有规定。我们确实关心重复测试的性能。
标签: python performance vectorization finite-element-analysis tetrahedra