给定一个3D对象,如何将其转换为近似形状,其中对象的所有边平行于任一坐标平面,并且所有顶点都具有整数坐标? 例如,原点为中心且半径为1.5的球体将近似为中心位于原点且边长为2的立方体。 另一个例子,由 x = y = 0.5 给出的线将具有近似的形状,如长方形,长度无限,宽度和宽度为1,并且定位为其边缘之一为z轴,而所有面都沿着或平行于xz或yz坐标平面。
我只使用有限对象,上面的例子只是为了解释我的需求。 我想要一个能为我做任何形状的算法。
答案 0 :(得分:2)
在一般情况下,您需要确定沿每个轴的最大和最小形状坐标,并定义最小轴对齐的整数边界框,其中值rounded to larger(使用Ceil)表示最大值,舍入到较小(使用Floor)表示最小坐标。例如:
XMin_Box = Floor(XMin_Shape)
XMax_Box = Ceil(XMax_Shape)
编辑:
如果您需要更精确地近似一个形状,请考虑某种voxelization(二维光栅化的三维模拟)