martes, 26 de octubre de 2010

Cómo trasladar y girar una curva

Mover una curva es otra de las cosas más sencillas de hacer. Por ejemplo, si tenemos la siguiente curva que parte del punto (0,0) y queremos moverla al punto (6,4), podemos hacer la siguiente transformación:

% curva original
x = [0:0.1:4*pi];
y = sin(x);

% translación al punto (6,4)
x1 = x + 6;
y1 = y + 4;

figure(1)
hold on
box on
plot(x,y,'-b')
plot(x1,y1,'-m')
axis equal
legend('original','movida',2)




Si lo que queremos es girar la curva un ángulo tita, la operación también es muy sencilla. Aplicamos la siguiente transformación (que se calcula muy facilmente por geometría). Por ejemplo, para un ángulo θ = τ/6 radianes:

% rotacion de tita radianes
tita = 2*pi/6;
x1 = (x-y*tan(tita))*cos(tita);
y1 = y/cos(tita) + (x-y*tan(tita))*sin(tita);

figure(2)
hold on
box on
plot(x,y,'-b')
plot(x1,y1,'-m')
axis equal
legend('original','girada')


Hay que tener cuidado, porque las ecuaciones anteriores no están definidas si θ vale τ/4 (π/2) o múltiplos. En esos casos, hay que girar la curva directamente de la forma:

% giro de 1/4 tau (1/2 pi) radianes
x1 = -y;
y1 = x;

% giro de 2/4 tau (pi) radianes
x2 = -x;
y2 = -y;

% giro de 3/4 tau (3/2 pi) radianes
x3 = y;
y3 = -x;

figure(3)
hold on
box on
plot(x,y,'-b')
plot(x1,y1,'-m')
plot(x2,y2,'-r')
plot(x3,y3,'-k')
legend('original','girada 1/4 \tau','girada 2/4 \tau', 'girada 3/4 \tau')

No hay comentarios: