gpt4 book ai didi

C- 在一维字节数组中索引 x、y、z 坐标

转载 作者:行者123 更新时间:2023-12-04 02:31:11 26 4
gpt4 key购买 nike

我想评估曲面的值以实现行进四面体算法,但我不明白如何使用 .raw 未格式化数据。

将包含体积数据集的 .raw 文件加载到一维字节数组中后,应应用什么算术转换来从中获取与 X、Y、Z 关联的值?这是我知道加载 .raw 文件的唯一方法,我可以创建一个 3D 字节数组而不是这个吗?如何?

int XDIM=256, YDIM=256, ZDIM=256;
const int size = XDIM*YDIM*ZDIM;
bool LoadVolumeFromFile(const char* fileName) {

FILE *pFile = fopen(fileName,"rb");
if(NULL == pFile) {
return false;
}

GLubyte* pVolume=new GLubyte[size]; //<- here pVolume is a 1D byte array
fread(pVolume,sizeof(GLubyte),size,pFile);
fclose(pFile);

最佳答案

在 (x, y, z) 索引数据的方式是:

pVolume[((x * 256) + y) * 256 + z]

在幕后,这就是 C 编译器为您所做的,如果您编写:

GLuByte array[256][256][256];

array[x][y][z]

之所以有效,是因为 C 从 0 开始索引;如果语言从 1 开始索引,则必须修改计算以实现通过在进行索引之前从 x、y 和 z 中的每一个减去 1 获得的最终结果。


辅助问题

Can you generalize the formula for arbitrary dimensions?

给定(数值并不重要):

DIMx = 256
DIMy = 128
DIMz = 64

一维数组中 (x, y, z) 处的数据 pData位于:

pData[((x * DIMx) + y) * DIMy + z]

DIMz 的值主要用于验证:0 <= z < DIMz (使用数学而不是 C 符号),并并行 0 <= x < DIMx; 0 <= y <= DIMy . z 的 C 表示法是0 <= z && z < DIMz ;为 x 重复 mutatis mutandisy .

关于C- 在一维字节数组中索引 x、y、z 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com