等間隔の3Dグリッドの座標(x、y、z)を持っています。グリッドのどこかにランダムな3D点(x、y、z)が与えられている場合、その点を持つ立方体を見つける方法。私は立方体の8つのコーナーを知る必要があります。
私はベクトルのリストに格子点データを持っています。3Dグリッド内にランダムな点を持つ立方体のコーナーポイントを見つける
ありがとうございました。
等間隔の3Dグリッドの座標(x、y、z)を持っています。グリッドのどこかにランダムな3D点(x、y、z)が与えられている場合、その点を持つ立方体を見つける方法。私は立方体の8つのコーナーを知る必要があります。
私はベクトルのリストに格子点データを持っています。3Dグリッド内にランダムな点を持つ立方体のコーナーポイントを見つける
ありがとうございました。
すべてdimentionsのグリッドキューブの等しい長さを仮定すると、あなたは(I gx
は、gy
、gz
がグリッドキューブです
gx = x - x%l;
gy = y - y%l;
gz = z - z%l;
がオリゴに最も近い座標計算することにより、オリゴを大江に最も近い座標を取得することができますここでは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)
グリッドの起点が(0,0,0)
であると仮定すると、(x,y,z)
をグリッドのサイズで除算する必要があります。 は、その後、あなたが結果を丸めると、グリッドのサイズを掛けなければならない、それは次のようになります。
n<=x
は(実際には、あなただけの浮動小数点の結果をキャストする必要がありますように
[x]
が、最大の整数
n
ある
(nx, ny, nz) = [(x,y,z)/grid_size] * grid_size
操作をint
に送信する)。検索するポイントは次のとおりです。
(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)