problem with rotation matrix

2 次查看(过去 30 天)
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);

采纳的回答

Geoff
Geoff 2012-5-15
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 3-D Scene Control 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by