考虑具有顶点(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
我如何制作不同的情节来展示它们?旋转的代码是否有意义并满足所有要求?
答案 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');