function [xr,yr,zr] = traslacion(eje,angulo,vector,datos,o,m,n)

o = o';
datos = [datos ones(m*n,1)];

switch eje
    case 1 %Rotacion en eje x
        T = [1 0 0 o(1);0 cos(angulo) -sin(angulo) o(2);0 sin(angulo) cos(angulo) o(3);0 0 0 1];
    case 2 %Rotacion en eje y
        T = [cos(angulo) 0 sin(angulo) o(1);0 1 0 o(2);-sin(angulo) 0 cos(angulo) o(3);0 0 0 1];
    case 3 %Rotacion en eje z
        T = [cos(angulo) -sin(angulo) 0 o(1);sin(angulo) cos(angulo) 0 o(2);0 0 1 o(3);0 0 0 1];
    case 4 %Rotacion en eje arbitrario
        kx = vector(1);
        ky = vector(2);
        kz = vector(3);
        vt = 1 - cos(angulo);
        T = [kx^2*vt+cos(angulo)     kx*ky*vt-kz*sin(angulo) kx*kz*vt+ky*sin(angulo) o(1);...
             kx*ky*vt+kz*sin(angulo) ky^2*vt+cos(angulo)     ky*kz*vt-kx*sin(angulo) o(2);...
             kx*kz*vt-ky*sin(angulo) ky*kz*vt+kx*sin(angulo) kz^2*vt+cos(angulo)     o(3);...
             0                       0                       0                       1];
end

ar = datos*T';

xr = ar(:,1);
yr = ar(:,2);
zr = ar(:,3);

xr = reshape(xr,m,n);
yr = reshape(yr,m,n);
zr = reshape(zr,m,n);