1

手頭的問題是關於3D空間內2D增長的科學模擬的一部分。 2D形狀通過將(三角形)片段添加到先前生長的形狀而生長。如何計算凸多面體和另一個多面體之間的交點?

Image explanation

注意,在3D實際段的厚度,因此,我的代碼實際上三棱鏡工作。

在某一點上,這些2D形狀(無論相對方向和位置)會發生碰撞。

如果其中一個新的三棱鏡與先前插入的段相交,我只想插入與先前插入的段不相交的段的「部分」。如下所示,標記爲T1和T2的部分。

Wall diagram

在第一步驟中,我計算所有交點邊緣面。然後,我使用3D中的CGAL Delaunay Triangulation軟件包將合成點集合網格化爲四面體網格。作爲最後一步,我扔掉所有與先前插入的段相交的四面體。 這在大多數情況下都能很好地工作 - 但現在我確信這個想法不能用於基本原因。

什麼是更可靠的計算方法?

回答

0

所以你正在尋找2個凸包的交集?

我認爲你的正確,你的方法不適用於所有情況,但只適用於某些退化情況。例如,如果一個凸包完全位於另一個凸包中,那麼不存在面/邊交點。

一個更明顯穩健的方法是從一個凸出的外殼開始,這個凸出的外殼足以包圍你的兩個外殼(所以基本上代表了所有的空間),然後對於你的兩個凸包中的每個平面,把部分扔在「外面」。

結果將是交叉點 - 可能什麼也不是。

+0

我會考慮你的方法。然而,有兩件事:1.我不是在尋找交集,我實際上是在尋找所有(當然只有那些在附近的)先前插入的段的集合中的新段的補集。 如果我有交集,我仍然不得不從新的分段中減去它。 – Merlin

相關問題