2017-05-08 46 views
0

給定一個3D對象,我該如何將它轉換成一個近似的形狀,其中物體的所有邊平行於任何一個座標平面,並且所有的頂點都有整數座標?例如,以原點爲中心並且半徑爲1.5的球體將近似爲以原點和邊長爲中心的立方體。 又例如,x = y = 0.5給出的線將具有近似形狀爲具有無限長度,寬度和寬度爲1的直角平行六面體,並且定位成其邊緣中的一個沿着z軸,而所有面都沿着或平行於xz或yz座標平面中的任一個。如何將3D形狀逼近網格?

我只使用有限的對象,上面的例子只是爲了解釋我的需要。 我想要一個算法,可以爲任何形狀做到這一點。

回答

2

在一般情況下,您需要確定沿每個軸的最大和最小形狀座標,並定義最小軸對齊的整數邊界框,其值爲最大值rounded to larger(使用Ceil),最小值座標爲舍入到較小值(使用Floor)。例如:

XMin_Box = Floor(XMin_Shape) 
XMax_Box = Ceil(XMax_Shape) 

編輯:

如果需要近似的形狀更精確,可以考慮某種voxelization(2D光柵化的3D模擬)

+0

感謝您的幫助。然而,我並不是在尋找那個。我想我需要在我的問題中提供一個更好的例子。 –