algorithm - 如何将 3D 形状近似为网格?

标签 algorithm geometry approximation

给定一个 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/

相关文章:

matlab - Matlab 中的混合整数最近最优解

python - Minimax 算法只返回特定的一组值

给定半径为1.00的圆坐标的java数学计算

java - 具有高效查询算法的层次数据结构

objective-c - 从一组线中查找多边形

algorithm - 检查一个变化的无向图是否至少有一个圆

approximation - 插值建议(线性,三次?)

computational-geometry - 通过球体的联合逼近固体

sql - 如何查询用户与所有其他用户之间的评分平均差异

c++ - 将概率分布拟合到观察到的数据c++