我有一个均匀间隔的3D网格的坐标(x,y,z)。给定网格上某处的随机3D点(x,y,z),如何查找哪个立方体具有该点。我需要知道立方体的8个角。
我在C++中的 vector 列表中有网格点数据。

谢谢。

最佳答案

假设所有尺寸的网格立方体的长度相等,则可以通过计算得出最接近orhe origo的坐标

gx = x - x%l;
gy = y - y%l;
gz = z - z%l;

其中gxgygz是最接近于Origo的网格立方体坐标(我在这里假设xyz> = 0),%是模运算符,l是网格立方体的长度。

注意:您也可以通过以下方式执行计算:gx = static_cast<int>(x)/l*l;(static_cast<>表示非整数x)

然后,网格多维数据集(x, y, z)的8个角分别为:
(gx, gy, gz)
(gx+l, gy, gz)
(gx, gy+l, gz)
(gx, gy, gz+l)
(gx+l, gy+l, gz)
(gx+l, gy, gz+l)
(gx, gy+l, gz+l)
(gx+l, gy+l, gz+l)

07-25 23:14