Давайте сначала сделаем это с двумерным массивом:
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-мерном массиве вы бы использовали
i*WIDTH*3 + j*3 + k
Вам не нужно ни sizeof(float)
нигде, хотя вам, вероятно, нужно преобразование значений, которое Майк ДеСимоне предлагает.