Matlab - Rotar una línea en matlab

 
Vista:
sin imagen de perfil

Rotar una línea en matlab

Publicado por Alvaro (6 intervenciones) el 03/03/2016 10:44:02
Buenas amigos:

Quiero plotear una línea en matlab rotada un cierto ángulo en radianes.

Tengo los puntos iniciales y finales en las coordenadas x e y de los dos puntos que componen la línea.

Com puedo rotar esta línea por ejemplo 0.7 radianes?

Gracias por la ayuda, saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Rotar una línea en matlab

Publicado por Jorge De Los Santos (213 intervenciones) el 03/03/2016 18:15:15
Hola Alvaro.

La forma más sencilla y conveniente es utilizando matrices de transformación, puedes revisar el siguiente enlace en el cual se explican los conceptos elementales de las matrices de transformación utilizadas para rotaciones y/o traslaciones:

http://serdis.dis.ulpgc.es/~ii-fgc/Tema%203%20-%20Transformaciones%202D.pdf

Luego, para tu caso, habría que definir previamente respecto a qué punto vas a rotar tu línea y trasladar tus coordenadas a ese nuevo punto, si el origen (0,0) será el punto de rotación entonces no sería necesaria tal traslación. Una vez está definido el punto de rotación entonces procedes a aplicar la matriz de rotación correspondiente. En resumen, te dejo el siguiente código que más o menos implementa lo que te comento:

1
2
3
4
5
6
7
8
9
10
11
12
13
clear;clc;
hold on
pr = [0,0]; % Punto de rotación
x = [0,10]; % Coordenadas x de la línea
y = [0,10]; % Coordenadas y de la línea
P = [x;y];
T = repmat([pr(1);pr(2)],1,size(P,1)); % Matriz de traslación
PT = P + T; % Puntos trasladados
theta = 0.7; % Ángulo de rotación (radianes)
R = [cos(theta) -sin(theta); sin(theta) cos(theta)]; % Matriz de rotación
PR = R*PT; % Aplicando la matriz de rotación
plot(P(1,:),P(2,:)); % Graficar línea original
plot(PR(1,:),PR(2,:)); % Graficar línea rotada




Saludos, espero te sea útil.


Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar