使用矩阵向量乘法的多边形旋转

时间:2018-03-01 22:21:49

标签: matlab

考虑具有顶点(0, 0), (1, 0), (7/10, 1), (1/2, 1/2), and (3/10, 1)的多边形。使用填充函数在Matlab中绘制此多边形的图。使用Matlab中的矩阵向​​量乘法和适当选择的旋转矩阵R将此多边形旋转角度100度。使用填充制作旋转多边形的另一个绘图。

% Makes original polygon 
X = [0 1 7/10 1/2 3/10];
Y = [0 0 1 1/2 1];
norm_poly = fill(X,Y,'k');

thetad  = 100;
R = [cosd(thetad) -sind(thetad); sind(thetad) cosd(thetad)];
C = repmat([0 0], 5, 1)';
axis([-10 10 -10 10])
V = get(norm_poly,'Vertices')';  % get the current set of vertices
V = R*(V - C) + C;             % do the rotation relative to the centre of the 
square
set(norm_poly,'Vertices',V');    % update the vertices

我如何制作不同的情节来展示它们?旋转的代码是否有意义并满足所有要求?

1 个答案:

答案 0 :(得分:0)

旋转本身是有道理的。要在制作第一个图表后使用hold on将多个内容绘制到同一个图表中。或者,您可以制作新的figure并在那里绘制新的fill

P = [0, 1, 7/10, 1/2, 3/10;
     0, 0, 1,    1/2, 1];
fill(P(1,:), P(2,:), 'k');

theta = 100;
R = @(t) [cosd(t) -sind(t); sind(t) cosd(t)];

axis([-3 3 -3 3])
grid on
V = R(theta)*P;

hold on;
fill(V(1,:), V(2,:), 'k');