刷抖音的时候无意间刷到了封面中的那张图,基本上都是手绘的,可咱用matlab的也不能落下呀,所以花了十几分钟的时间完成下面的matlab版代码。
这个绘制没有什么难点,关键是找出各点的坐标,接下来就是连线操作,一起来看看吧!
以下的为源代码,直接复制粘贴就能用,拿走不谢!
% 作者:bashan
% 微信公众号:matlab爱好者 (ID:matlabaihaozhe)
% 更多精彩,请关注matlab爱好者微信公众号
tic;
% 定义四个正方形角点坐标
sq = [0 0 1 1 0 0 0 1 1 0 2 2 3 3 2 2 2 3 3 2;0 1 1 0 0 2 3 3 2 2 2 3 3 2 2 0 1 1 0 0];
% 定义中心点坐标
ced = [1.5,1.5];
% 定义中心十字顶点坐标
cs = [1.5 1 1.5 2;1 1.5 2 1.5];
% 创建figure图形并命名
figure('Name','立体图绘制 —— matlab爱好者出品','NumberTitle','off','Menubar','none');
% 设置绘制停顿时间
t = 0.4;
axis equal;
xlim([-0.5 3.5]);
ylim([-0.5 3.5]);
axis off;
hold on;
% 设置欢迎语
text(0.35,2.5,'欢','Color','k','FontWeight','bold','FontSize',16);
pause(t);
text(2.35,2.5,'迎','Color','k','FontWeight','bold','FontSize',16);
pause(t);
text(0.35,0.5,'关','Color','k','FontWeight','bold','FontSize',16);
pause(t);
text(2.35,0.5,'注','Color','k','FontWeight','bold','FontSize',16);
pause(t);
len = size(sq,2);
t = 0.1;
% 绘制正方形角点
for k = 1:len
plot(sq(1,k),sq(2,k),'b.');
pause(t);
end
% 绘制十字顶点
for k = 1:4
plot(cs(1,k),cs(2,k),'r.');
pause(t);
end
% 顺时针绘制正方形
for k = 1:4
tsq = [sq(1,1+(k-1)*5:k*5);sq(2,1+(k-1)*5:k*5)];
for m = 1:4
plot(tsq(1,m:m+1),tsq(2,m:m+1),'r');
pause(t);
end
end
% 绘制中心十字
for k = 1:4
plot([cs(1,k) ced(1)],[cs(2,k) ced(2)],'g');
pause(t);
end
% 绘制中心交叉线
loc = [3 9 11 17];
for k = 1:4
plot([sq(1,loc(k)) ced(1)],[sq(2,loc(k)) ced(2)],'b');
pause(t);
end
% 绘制外围连线
loc = [4 2 6 8 12 14 18 16;1 2 2 3 3 4 4 1];
for k = 1:8
plot([sq(1,loc(1,k)) cs(1,loc(2,k))],[sq(2,loc(1,k)) cs(2,loc(2,k))],'b');
pause(t);
end
hold off;
toc
效果图