Armin Halilovic MATLAB: rotation
Sida 1 av 4
Rotation i xy-planet med hjälp av en rotationsmatris
Vi kan utföra rotationen vinkeln v, kring origo, av en punkt P=(a,b) i xy-planet med hjälp av
s.k. rotationsmatrisen
−
= sin( ) cos( ) ) sin(
) cos(
v v
v
A v .
Först skriver vi punkten (a,b) som en kolonnmatris
= b P a .
Låt Q vara den punkt som vi får genom att rotera P vinkeln v kring origo.
Då gäller
−
=
= b
a v v
v AP v
Q sin( ) cos( ) ) sin(
)
cos( .
Exempel 1. ( ”Papper och penna”) Rotera punkten
= 1
P 1 vinkeln 4
=π
v runt origo.
Lösning:
Rotationsmatrisen i vårt fall är
−
=
−
=
2 2 2
2 2
2 2
2 )
cos(
) sin(
) sin(
) cos(
v v
v
A v .
Därför
−
=
= b
a v v
v AP v
Q sin( ) cos( ) ) sin(
)
cos( =
=
−
2 0 1 1 2
2 2
2 2
2 2
2
.
Svar:
= 2 Q 0
Om vi ska rotera flera punkter då kan vi använda Matlab för beräkning och grafritning som i följande exempel.
Uppgift 1. (Matlab) Låt K vara den kvadrat som har hörn är i punkterna P1=(3,3), P2=
(4,3), P3= (4,4) och P4= (3.4). Låt L vara den kvadrat som vi får genom att rotera K vinkeln v= 2*pi/3 kring origo. Rita i samma figur båda kvadrater.
Lösning:
Armin Halilovic MATLAB: rotation
Sida 2 av 4 clear
clc%% Rotationsmatrisen med vinkeln v:
v=2*pi/3
A=[cos(v), -sin(v); sin(v),cos(v) ]
%% Kvadratens hörnpunkter skriver vi som kolonnmatriser:
P1=[3;3]
P2=[4;3]
P3=[4;4]
P4=[3;4]
%% Vi roterar separat varje hörnpunkt (genom att multiplicera med matrisen A)
Q1=A*P1, Q2=A*P2, Q3=A*P3, Q4=A*P4
%% Vi plottar de två kvadraterna i en figur
% För att plotta en månghörning bestämmer vi två separata listor
% en lista med x-koordinater och
% en lista med y-koordinater
xp=[P1(1), P2(1), P3(1), P4(1),P1(1)] % x- koordinat i punkten Pk är Pk(1)
yp=[P1(2),P2(2), P3(2),P4(2) P1(2)] % y- koordinat i punkten Pk är Pk(2)
xq=[Q1(1),Q2(1), Q3(1),Q4(1), Q1(1)] % x-koordinat i punkten Qk är Qk(1)
yq=[Q1(2),Q2(2), Q3(2),Q4(2), Q1(2)] % y-koordinat i punkten Pk är Pk(2)
figure(1)
clf % rensar eventuella gamla grafer i figure(1)
fill(xp,yp,'b') % Ritar den ursprungliga kvadraten. 'b' står för "blue" färg
axis equal % samma skala på x och y-axeln axis([-6,6, -6,6])
grid on %rutnät
hold on % behåller föregående figur
fill(xq,yq,'r') % Ritar den roterade kvadraten. 'r' står för "red" färg,
Armin Halilovic MATLAB: rotation
Sida 3 av 4 Vi får följande figur:
---
Anmärkning: vi kan även rita sträckor från origo till P1 och Q1 för att åskådligt göra rotationsvinkeln v =2Pi/3. Detta gör vi i nedanstående graf:
%% Samma graf som ovan + två sträckor från origo.
% Linjen från O till P1 x1=[0,P1(1)]
y1=[0,P1(2)]
% Linjen från O till Q1 x2=[0,Q1(1)]
y2=[0,Q1(2)]
figure(2)
clf % rensar eventuella gamla grafer i figure(2)
-6 -4 -2 0 2 4 6
-6 -4 -2 0 2 4 6
Armin Halilovic MATLAB: rotation
Sida 4 av 4
fill(xp,yp,'b') % Ritar den ursprungliga kvadraten. 'b' står för "blue" färg
axis equal % samma skala på x och y-axeln axis([-6,6, -6,6])
grid on %rutnät
hold on % behåller föregående figur
fill(xq,yq,'r') % Ritar den roterade kvadraten. 'r' står för "red" färg,
plot(x1,y1) % Linjen från O till P1 plot(x2,y2) % Linjen från O till P2
-6 -4 -2 0 2 4 6
-6 -4 -2 0 2 4 6