C++ 查找三维栅格中具有随机点的立方体的角点
我有一个等间距三维网格的坐标(x,y,z)。给定网格上某个地方的随机3D点(x、y、z),如何找到该点所在的立方体。我需要知道立方体的8个角。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是网格立方体的长度 注意:您也可以这样执行
我在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)