2013-08-23 92 views
0

我有兩個物體:一個球體和一個物體。它是我使用曲面重構創建的一個對象 - 所以我們不知道對象的方程。我想知道物體和球體相交時球體上的相交點。如果我們有一個球體和一個圓柱體,我們可以求解方程並計算出面積,除了這裏的問題外,其餘的都是物體不均勻。球體和非均勻物體交點

有沒有辦法找出球體上的相交點或區域?

+0

我可能是迂腐的,但只是可以肯定的是:你想要在3d球體內的重建表面(這可能是3d)的2D表面區域? – Tommy

+0

不,我實際上是在這些點之後,以便我可以將球體上的點轉移到對象並重建表面以獲得完整的表面(如下面所述,就像當您咬掉蘋果時一樣)。 – user2363111

+0

哦,所以它是一種建設性的堅固的幾何形狀的東西?得到它了。 – Tommy

回答

0

我會先找到與球體相交的三角形。首先找到每個三角形的平面和球體的交點,這會給出一個圓圈。然後使用線/圓測試在2D中查找具有三角形邊的圓的交點/ s。結果會是很多弧線,我猜你可以用線來近似。我不確定在不知道最終目標的情況下從哪裏出發。

如果它在表面積之後,也許數值方法會更好。我會用點數來覆蓋球體並計算非統一對象內的數字。要找到一個點是否在內部,可能會向外追蹤並計算與曲面的交點(如果它很奇怪,則點在內)。如果需要,您可以使用模板緩衝區(類似於模板陰影)。

如果你想要一個快速的谷歌搜索給出「雕刻」,一個基於網格的CSG庫的交集量。

+0

其實最終的目標是使用球體作爲切割器。我想將球體上的點轉移到物體上,並重建表面以獲得完整的表面(就像當你咬掉一個蘋果時一樣)。 – user2363111

+0

好吧,那麼你想要重建一個基於點的模型,然後用重建的CSG操作,而不是保留三角形數據,將點放回原始表示並重新構建?我會從6個不同的(立方體面)方向使用基於圖像的CSG,保持球體上的像素位置。然後像素成爲你的觀點。也許使用「OpenCSG」? – jozxyqk

0

從三角形開始,與球體相交會得到交點。

您可以將與每個表面相交的弧與它們結合以在球體周圍形成圍欄。理想情況下,您重建的對象將在winged-edge format中,因此您可以從一個柵欄段走到下一個柵欄段,但重建曲面時,我想您可能需要應用一些略微模糊的邏輯。

您可以確定每個圍欄的哪一側位於重建對象內部,哪一側通過考慮沿着圍欄的表面法線。

然後,您可以沿着柵欄切割球體並將內部位添加到顯示器。

對於物體的另一面,您可以完全去除球體內部的任何三角形並切割相交的部分。