void rotate4(int dim, pixel *src, pixel *dst) { int i, j, inR; int dimN = (dim * dim) - dim; pixel *buf=malloc(4); // [i, j] = i * n + j // #define RIDX(i,j,n) ( (i)*(n)+(j) ) for (i = 0; i < dim; i++){ inR = dimN - (dim * i); for (j = 0; j < dim; j+=4){ buf[0] = src[ (j * dim) + i ]; buf[1] = src[ ( (j + 1) * dim) + i ]; buf[2] = src[ ( (j + 2) * dim) + i ]; buf[3] = src[ ( (j + 3) * dim) + i ]; memcpy((dst+inR), buf, 4*sizeof(buf)); } } }