2010-06-08 187 views
1

如果存在ar [5000]的數組,那麼如果這是一個3維數組,那麼如何找到元素[5] [5] [4]會是什麼?謝謝將三維數組參考轉換爲一維數組

我正在映射像素: 想象一下bimap的[768 * 1024 * 4] 像素[5] [5] [4]會在哪裏?

我想使這個:未做多維數組

static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; 

static GLuint texName; 
bool itt; 
void makeCheckImage(void) 
{ 
    Bitmap *b = new Bitmap(L"c:/boo.png"); 

    int i, j, c; 
    Color cul; 

    for (i = 0; i < checkImageHeight; i++) { 
     for (j = 0; j < checkImageWidth; j++) { 
      b->GetPixel(j,i,&cul); 


      checkImage[i][j][0] = (GLubyte) cul.GetR(); 
      checkImage[i][j][1] = (GLubyte) cul.GetG(); 
      checkImage[i][j][2] = (GLubyte) cul.GetB(); 
      checkImage[i][j][3] = (GLubyte) cul.GetA(); 
     } 
    } 
    delete(b); 
} 

工作。 width = 512,height = 1024 ....

+1

我認爲你需要知道數組尺寸你知道兩個尺寸的固定尺寸來回答這個問題 – Kcats 2010-06-08 15:43:13

+1

? – Joe 2010-06-08 15:43:15

+1

對於位圖,您需要知道每個通道(即4)是否存儲爲連續塊或像素是否作爲單獨塊存儲。 (頻帶交織或像素交織)你使用什麼格式? – 2010-06-08 15:48:31

回答

0

[X * z_size * Y_SIZE + Y * z_size + Z]工作

7

這將取決於假想的三維陣列的尺寸以及它的佈局。有時公式爲ar[z * x_size * y_size + y * x_size + x] == ar[z][y][x],但不知道每個維度的大小以及它們的順序,因此無法確定。

+0

+1擊敗我吧 – Lazarus 2010-06-08 15:43:28

+1

不是'ar [z] [y] [x]'? – JAB 2010-06-08 15:49:37

+0

夠公平的,JAB。我會改變這一點。 – 2010-06-08 15:55:49

0

您需要知道尺寸的大小。如果您希望將其解釋爲ar[m][n][p]陣列,則mnp=5000ar[5][5][4]將對應於ar[5*m*n+5*n+4]

這是因爲C++工作在行主要訂單

相關問題