给定一个 3D 对象,如何将其转换为近似形状,其中对象的所有边都平行于任一坐标平面,并且所有顶点都具有整数坐标? 例如,一个中心在原点、半径为 1.5 的球体将近似为一个中心在原点、边长为 2 的立方体。 再例如,由x = y = 0.5 给出的直线的形状近似为长方体,无限长,宽和宽为 1,其位置使其其中一条边沿z 轴,而所有的面都沿着或平行于 x-z 或 y-z 坐标平面。
我只使用有限对象,上面的例子只是为了解释我的需求。 我想要一种可以为我对任何形状执行此操作的算法。
最佳答案
在一般情况下,您需要确定每个轴上的最大和最小形状坐标,并定义最小轴对齐的整数边界框,其值为 rounded to larger (使用 Ceil)为最大值,并为最小坐标四舍五入为更小(使用 Floor)。例如:
XMin_Box = Floor(XMin_Shape)
XMax_Box = Ceil(XMax_Shape)
编辑:
如果您需要更精确地近似形状,请考虑某种 voxelization (2d 光栅化的 3d 模拟)
关于algorithm - 如何将 3D 形状近似为网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840982/