2010-10-10 23 views
5

我想要的漂浮字節值存儲在pixelsArray每個三維座標三維陣列,在一維數組:C++表示一維數組

float aFloat = 1.0; 
unsigned char* pixelsArray = new unsigned char[HEIGHT*WIDTH*3]; 

for (int i = 0; i < HEIGHT; i++) 
{ 
    for (int j = 0; j < WIDTH; j++) 
    { 
     for (int k = 0; k < 3; k++) 
     { 
     pixelsArray[?] = aFloat; 
     } 
    } 
} 

什麼會去的?如果我沒有弄錯,我認爲它還需要在指數的某個位置有+ sizeof(float)

回答

7

你的內線需要是:

pixelsArray[(i * WIDTH + j) * 3 + k] = (unsigned char)(255.0 * aFloat); 

這應該給你一個全白圖像。

確保你的目標真的是每個像素三個字節,而不是四個(alpha通道或填充)。如果它是四個,則只需將上面的3更改爲4即可。

+0

作品非常完美,非常感謝! :) – Steve 2010-10-10 23:46:09

5

讓我們做這樣一個2維數組第一:

0   1  ... W-1 
W   W+1  ... 2*W-1 
2*W  2*W+1  ... 3*W-1 
    .   .  .  . 
    .   .  .  . 
    .   .  .  . 
(H-1)*W (H-1)*W+1 ... H*W-1 

所以,你會用

unsigned char* array = new unsigned char[H*W]; 
for(int r=0;r<H;r++) 
    for (int c=0; c<H; c++) 
    array[r*w+c]=...; 

在你的3維數組accesss這一點,你會使用

i*WIDTH*3 + j*3 + k 

任何地方都不需要sizeof(float),儘管您可能需要將值Mike DeSimone建議。