Transponer una matriz 2D
¿Cómo transpones eficientemente una matriz? ¿Hay bibliotecas para esto, o qué algoritmo usarías?
P.ej.:
short src[W*H] = {
{1,2,3},
{4,5,6}
};
short dest[W*H];
rotate_90_clockwise(dest,src,W,H); //<-- magic in here, no need for in-place
//dest is now:
{
{4, 1},
{5, 2},
{6, 3}
};
(En mi caso específico, su matriz src es datos de imagen en bruto, y el destino es un framebuffer, y estoy incrustado en ARM en una cadena de herramientas que no admite ensamblaje)