用matlab绘制五星红旗,用MATLAB绘制五星红旗【带飘动效果】
时间: 2023-12-14 16:02:18 浏览: 203
好的,下面是用 MATLAB 绘制五星红旗并添加飘动效果的代码:
```matlab
%% 五星红旗
clear;clc;
figure('Color',[1 1 1],'Position',[200,200,800,400],'MenuBar','none','NumberTitle','off','Name','五星红旗');
axis off;
hold on;
%% 红旗部分
fill([0 0 1 1],[0 0.6 0.6 0],'r');
%% 大星星
R = 0.2; % 大星星外接圆半径
x0 = 0.5; % 中心点横坐标
y0 = 0.4; % 中心点纵坐标
theta = linspace(0,2*pi,5); % 五角星的角度
x = x0 + R*cos(theta); % 五角星的横坐标
y = y0 + R*sin(theta); % 五角星的纵坐标
fill(x,y,'y'); % 画大星星
%% 小星星
r = 0.1; % 小星星外接圆半径
x1 = x0 + R*cos(pi/10); % 第一个小星星中心点横坐标
y1 = y0 + R*sin(pi/10); % 第一个小星星中心点纵坐标
x2 = x1 + r*cos(theta+pi/5); % 第二个小星星横坐标
y2 = y1 + r*sin(theta+pi/5); % 第二个小星星纵坐标
x3 = x0 + R*cos(9*pi/10); % 第三个小星星横坐标
y3 = y0 + R*sin(9*pi/10); % 第三个小星星纵坐标
x4 = x3 + r*cos(theta+pi/5); % 第四个小星星横坐标
y4 = y3 + r*sin(theta+pi/5); % 第四个小星星纵坐标
x5 = x0 + R*cos(13*pi/10); % 第五个小星星横坐标
y5 = y0 + R*sin(13*pi/10); % 第五个小星星纵坐标
x6 = x5 + r*cos(theta+pi/5); % 第六个小星星横坐标
y6 = y5 + r*sin(theta+pi/5); % 第六个小星星纵坐标
fill([x1 x2],[y1 y2],'y'); % 画第一个小星星
fill([x3 x4],[y3 y4],'y'); % 画第二个小星星
fill([x5 x6],[y5 y6],'y'); % 画第三个小星星
%% 飘动效果
N = 500; % 总共运动次数
t = linspace(0,2*pi,N); % 运动时间
dt = 0.02; % 运动时间步长
for i = 1:N
% 更新小星星位置
x2 = x1 + r*cos(theta+pi/5+t(i));
y2 = y1 + r*sin(theta+pi/5+t(i));
x4 = x3 + r*cos(theta+pi/5+t(i));
y4 = y3 + r*sin(theta+pi/5+t(i));
x6 = x5 + r*cos(theta+pi/5+t(i));
y6 = y5 + r*sin(theta+pi/5+t(i));
% 清空原有图像
cla;
% 重新绘制五星红旗
fill([0 0 1 1],[0 0.6 0.6 0],'r');
fill(x,y,'y');
fill([x1 x2],[y1 y2],'y');
fill([x3 x4],[y3 y4],'y');
fill([x5 x6],[y5 y6],'y');
% 更新图像
pause(dt);
end
```
运行代码,即可看到绘制出的五星红旗,并且小星星会随着时间的推移而飘动。
阅读全文