1D 矢量 - 3D 索引
1D vector - 3D indices
我正在使用一维向量来表示三维数据结构,索引为 0 到 x*y*z,其中 x、y 和 z 是每个方向上的单元格数。
为了索引特定的单元格 [xi][yi][zi],我使用:
index = xi + x*yi + x*y*zi ;
我的问题是,我无法弄清楚如何走另一条路!
例如,我想获取索引 43 中表示的各个坐标。
我想我已经想出了如何得到 xi:
xi = index % x ;
但我一辈子都得不到其他人... :/
编辑:嗯。这是对的吗?
xi = index % x;
yi = ((index - xi)/x) % y;
zi = ((index - xi - x*yi) / x) / y ;
试试这个:
xi = index % x;
yi = (index / x) % y;
zi = ((index / x) / y) % z;
正如人们所期望的那样,这很容易概括。
一些模算术应该可以解决问题。
index % x = (xi + x*yi + x*y*zi) % x = xi % x,
but 0 <= xi < x therefore xi % x = xi.
那么对于 yi:
(index / x) % y = yi.
最后:
index / (x * y) = zi.
编辑:
在代码中(与上面的数学相反),它将是:
xi = index % x;
yi = (index / x) % y;
zi = index / (x * y);
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 无法将结构注册为增强几何体3D点
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- OpenGL大的3D纹理(>2GB)非常慢
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 将2D数组的实例分配给3D数组中的索引
- 如何访问 3D CV::Mat 的索引
- 算术在3D矢量中获取索引
- 在C++中循环遍历一个3d索引的1d数组
- 将 3D 数组的索引传递给函数
- 如何使用冯诺依曼邻域在 3D 空间中设置索引
- 1D 矢量 - 3D 索引
- 具有负索引的3d数组-c++