Rotating a 2 demential shape 30 degrees counter clockwise
3 views (last 30 days)
Show older comments
Hello. I am new to the Matlab community and I was having a bit of trouble rotating an irregular 2 dimensional shape. The coordinates a x = [0 0 2 2 0 -2 -2 0] and y = [0 2 2 3 5 3 1 0]. I have to rotate this 30 degrees counter clockwise on the same axis. Any suggestions? Thanks
0 Comments
Answers (1)
Alex
on 26 Jul 2016
Edited: Alex
on 26 Jul 2016
This should rotate the points 30 degrees. R is using the rotation matrix to update the pairs of x,y coordinates.
z = [x; y];
thetad = 30;
R =[cosd(thetad) -sind(thetad); sind(thetad) cosd(thetad)];
for i = 1: 8
z(:,i) = R * z(:,i);
end
plot(z(1,:),z(2,:))
Here's another post that does it a little differently: http://www.mathworks.com/matlabcentral/answers/296860-rotating-a-2d-shape?s_tid=answers_rc1-1_p1
1 Comment
Alex
on 27 Jul 2016
You can also use makehgtform to get the rotation matrix, which could be useful if you needed to perform more transformations on the matrix at once. Just make sure you convert your degrees to radians.
Example:
z = [x;y];
M = makehgtform('zrotate', (pi/6));
for i = 1:8
z(:,i) = M(1:2,1:2) * z(:,i);
end
plot(z(1,:),z(2,:))
Here's some more info for working with makehgtform: http://www.mathworks.com/help/matlab/ref/makehgtform.html
See Also
Categories
Find more on Graphics Object Programming in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!