problem with rotation matrix

3 views (last 30 days)
Villanova
Villanova on 15 May 2012
Hi, I have this U shape which is in this code. I was wondering how I could rotate it using 2-D rotation matrix.
theta = pi/2;
rotation_matrix = [cos(theta), -sin(theta); sin(theta), cos(theta)];
obstacle_matrix = [z1, z2];
obstacle_shape = obstacle_matrix * rotation_matrix;
plot(obstacle_shape)
here is my other file.
% obstacle definition
function [z1 z2] = toric_obstacle(enl_fac)
x0 = -1.2*enl_fac;
y0 = -1*enl_fac;
x1 = -0.6/enl_fac;
y1 = -0.5/enl_fac;
x2 = 0.6/enl_fac;
x3 = 1.2*enl_fac;
y3 = 0.8*enl_fac;
delta = 0.01;
z1 = zeros(1000,1);
z2 = zeros(1000,1);
%line 1
i = 0;
for x = x0:delta:x3
i = i + 1;
z1(i) = x;
z2(i) = y0;
end
%line 2
i = i - 1;
for y = y0:delta:y3
i = i + 1;
z1(i) = x3;
z2(i) = y;
end
%line 3
i = i - 1;
for x = x3:-delta:x2
i = i + 1;
z1(i) = x;
z2(i) = y3;
end
%line 4
i = i - 1;
for y = y3:-delta:y1
i = i + 1;
z1(i) = x2;
z2(i) = y;
end
%line 5
i = i - 1;
for x = x2:-delta:x1
i = i + 1;
z1(i) = x;
z2(i) = y1;
end
%line 6
i = i - 1;
for y = y1:delta:y3
i = i + 1;
z1(i) = x1;
z2(i) = y;
end
%line 7
i = i - 1;
for x = x1:-delta:x0
i = i + 1;
z1(i) = x;
z2(i) = y3;
end
%line 8
i = i - 1;
for y = y3:-delta:y0
i = i + 1;
z1(i) = x0;
z2(i) = y;
end
i = i - 1;
z1 = z1(1:i);
z2 = z2(1:i);

Accepted Answer

Geoff
Geoff on 15 May 2012
Your code works fine, but you're just not plotting it correctly.
plot(obstacle_shape(:,1), obstacle_shape(:,2));
You might also want to correct the aspect ratio:
pos = get(gcf, 'Position');
aspect = pos(3) / pos(4);
set(gca, 'XLim', [-2,2]);
set(gca, 'YLim', [-2,2] / aspect);
By the way, your rotation is backwards. It is rotating clockwise, which is unconventional. You should negate both the sin terms in your rotation matrix.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!