用MATLAB函数画出五星红旗,我不会,求解!
谢谢,谢谢
你好,matlab画五星红旗代码供参考:
function China_flag()
A=30;B=20;C=10;D=2;E=3;F=1;G=5;
len=A; wid=B;
rectangle('Position',[-len/2,-wid/2,len,wid],'facecolor',...
[210,16,52]/255,'edgecolor',[210,16,52]/255)
hold on
axis equal
axis off
p1=[-len/2+G,wid/2-G];
p2=[-len/2+C,wid/2-D];
p3=[-len/2+C+D,wid/2-D-D];
p4=[-len/2+C+D,wid/2-D-D-E];
p5=[-len/2+C,wid/2-D-D-E-D];
R=E;
rr=F;
star(p1,R,[251,222,74]/255,0)
rot=pi/2+atan((G-D)/(C-G));
star(p2,rr,[251,222,74]/255,rot)
rot=pi/2+atan((G-D-D)/(C+D-G));
star(p3,rr,[251,222,74]/255,rot)
rot=atan((C+D-G)/(D+D+E-G));
star(p4,rr,[251,222,74]/255,rot)
rot=atan((C-G)/(D+D+D+E-G));
star(p5,rr,[251,222,74]/255,rot)
end
function star(xy,r,colorfill,rot)
coor=zeros(10,2);
for i=1:5
th=pi/2+(i-1)*72*pi/180+rot;
coor(2*i-1,1:2)=r*[cos(th),sin(th)]+xy;
coor(2*i,1:2)=r/(2*cos(36/180*pi)+1)*[cos(th+36*pi/180),sin(th+36*pi/180)]+xy;
end
patch('Vertices',coor,'Faces',1:size(coor,1),'FaceColor',colorfill,'EdgeColor',colorfill);
end
效果图:
答题不易,有帮助望采纳哟