我有一个均匀间隔的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;
其中
gx
,gy
和gz
是最接近于Origo的网格立方体坐标(我在这里假设x
,y
,z
> = 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)