2017-05-08 48 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

感谢您的帮助。然而,我并不是在寻找那个。我想我需要在我的问题中提供一个更好的例子。 –