Greetings,檢測任意形狀
我們有一組點代表3D物體與水平面的交點。我們希望檢測代表身體橫截面的2D形狀。可以有一個或多個這樣的形狀。我們發現,討論如何利用Hough變換圖像進行操作的文章,但我們可能有成千上萬這樣的點,所以轉換成圖像是非常浪費的。有沒有更簡單的方法來做到這一點?
謝謝
Greetings,檢測任意形狀
我們有一組點代表3D物體與水平面的交點。我們希望檢測代表身體橫截面的2D形狀。可以有一個或多個這樣的形狀。我們發現,討論如何利用Hough變換圖像進行操作的文章,但我們可能有成千上萬這樣的點,所以轉換成圖像是非常浪費的。有沒有更簡單的方法來做到這一點?
謝謝
在您的3D模型轉換爲一組點,你已經扔掉找到交集的形狀所需的信息。步行3D模型的邊緣連通圖,按順序查找邊緣平面交點。
假設你有,或可以構建,3D模型地形(一些數目的頂點的,由邊緣結合的頂點,面之間的邊緣):
你已經建立了交叉的平面邊緣的有序列表 - 這是微不足道的線性插值每個邊找到交叉點,從而,形成了路口形狀。請注意,這個過程假定臉部多邊形是凸面的,這是你的情況。 如果卷是凹的,你將有多個分立路口形狀,所以你需要,直至所有邊緣都被檢查,重複這個過程。
有做這個here一些Java代碼,以及一個相當漂亮的測試應用here。
控制:
從接受答案的算法/代碼不復雜的特殊情況下工作,當平面相交的凹面的一些頂點。在這種情況下「走」邊面的連接圖貪婪可能時間之前關閉一些多邊形。
會發生什麼情況是,因爲平面與頂點相交,所以在走圖的一個點上,下一個邊有兩種可能性,並且選擇哪一個是重要的。
一種可能的解決方案是實現一個圖的遍歷算法(例如深度優先搜索),並選擇其中包含起始邊緣的最長循環。
你說的是任何類型的三維形狀,還是有一些應用或特定領域的限制? – 2011-01-10 12:32:24