C++ 查找三维栅格中具有随机点的立方体的角点

C++ 查找三维栅格中具有随机点的立方体的角点,c++,vector,grid,cube,coordinate,C++,Vector,Grid,Cube,Coordinate,我有一个等间距三维网格的坐标(x,y,z)。给定网格上某个地方的随机3D点(x、y、z),如何找到该点所在的立方体。我需要知道立方体的8个角。 我在C++中的向量列表中有网格点数据。 谢谢。假设所有维度的网格立方体长度相等,您可以通过计算得到最接近ohe origo的坐标 gx = x - x%l; gy = y - y%l; gz = z - z%l; 其中,gx,gy,gz是离origo最近的网格立方体坐标(我假设x,y,z=0),%是模运算符,l是网格立方体的长度 注意:您也可以这样执行

我有一个等间距三维网格的坐标(x,y,z)。给定网格上某个地方的随机3D点(x、y、z),如何找到该点所在的立方体。我需要知道立方体的8个角。
我在C++中的向量列表中有网格点数据。
谢谢。

假设所有维度的网格立方体长度相等,您可以通过计算得到最接近ohe origo的坐标

gx = x - x%l;
gy = y - y%l;
gz = z - z%l;
其中,
gx
gy
gz
是离origo最近的网格立方体坐标(我假设
x
y
z
=0),
%
是模运算符,
l
是网格立方体的长度

注意:您也可以这样执行计算:
gx=static\u cast(x)/l*l
static\u cast
用于解释非整数
x

然后网格立方体的8个角
(x,y,z)
分为:

(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)

假设网格的原点位于
(0,0,0)
,则应将
(x,y,z)
除以网格的大小。 然后将结果四舍五入并乘以网格的大小,即:

(nx, ny, nz) = [(x,y,z) / grid_size] * grid_size
其中
[x]
是最大的整数
n
,因此
n
(nx, ny, nz)
(nx+grid_size, ny, nz)
(nx, ny+grid_size, nz)
(nx, ny, nz+grid_size)
(nx+grid_size, ny+grid_size, nz)
(nx+grid_size, ny, nz+grid_size)
(nx, ny+grid_size, nz+grid_size)
(nx+grid_size, ny+grid_size, nz+grid_size)