Created
December 26, 2023 11:42
-
-
Save ChuckieChen945/2fc7880a497d1b534d790139b31f802b to your computer and use it in GitHub Desktop.
用于在Matlab中画出闽师大图书馆
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%绘制圆柱体部分 | |
[x,y,z]=cylinder(1,50);%产生半径为1,边数为50的圆柱 | |
%改造圆柱,使之与图书馆外形匹配 | |
xt=[x(1,1:3),0.9602,0.7123,0.7123,0.7123,0.9156,x(1,5:6),0.7822,0.6636,0.6369,x(1,[8,8:19,19]),-0.6363,-0.6363,x(1,21:22),-0.9156,-0.6994,-0.6994,-0.6944,-0.9636,x(1,24:28),-0.9609,-0.6994,-0.6994,-0.6994,-0.9166,x(1,30:31),-0.6363,-0.6363,x(1,[33,33:44,44]),0.6369,0.6636,0.7822,x(1,46:47),0.9166,0.7123,0.7123,0.7123,0.9611,x(1,49:51)]; | |
yt=[y(1,1:3),0.2796,0.2780,0.2820,0.4021,0.4021,y(1,5:6),0.6231,0.6231,0.6231,y(1,[8,8:19,19]),0.5975,0.5878,y(1,21:22),0.4021,0.4021,0.2769,0.2690,0.2673,y(1,24:28),-0.2770,-0.2770,-0.3845,-0.4000,-0.4000,y(1,30:31),-0.5878,-0.5975,y(1,[33,33:44,44]),-0.6231,-0.6231,-0.6231,y(1,46:47),-0.4000,-0.4000,-0.2820,-0.2763,-0.2763,y(1,49:51)]; | |
t1=2*pi/76;%改造后的圆柱边缘共 76 个点,t1 用于产生 中空正方形边上的 76 个点 | |
t2=0.2054./cos([10:-1:1]*t1).*sin([10:-1:1]*t1);%正方形的 一部分 x 分量 | |
t3=0.2639./cos([1:8]*t1).*sin([1:8]*t1);%正方形的一部分 y 分量 | |
a=[linspace(0.2639,0.2639,9),t2,0,-fliplr(t2),linspace(-0.2639,-0.2639,17),-t2,0,fliplr(t2),linspace(0.2639,0.2639,9)];%构造正方形的 x 分量 | |
b=[0,t3,linspace(0.1918,0.1918,21),fliplr(t3),0,-t3,linspace(-0.1918,-0.1918,21),-fliplr(t3),0];%正方形%构 造正方形的 y 分量 | |
t4=[xt(1:13),1.0745.*xt(14:25),xt(26:50),1.0745.*xt(51:62),xt(63:77)];%构造图书馆 3、4 楼突起部分的外形 x 分量 | |
t5=[yt(1:13),1.0745.*yt(14:25),yt(26:50),1.0745.*yt(51:62),yt(63:77)];%y 分量 | |
t6=zeros(2,77);%z 分量之一 | |
t7=linspace(1,1,77); | |
t8=0.0827:0.0827:0.5696; | |
[t7,t8]=meshgrid(t7,t8);%t7为辅助作用,用于构造等高线, 将等高线存入 t8,作为 z 分量 | |
zt=[t6;t8([1,2],:);linspace(0.2208,0.2208,77);linspace(0.2208,0.2208,77);t8([3:5],:);linspace(0.4588,0.4588,77);linspace(0.4588,0.4588,77);t8(6,:);linspace(0.6056,0.6056,77);linspace(0.6056,0.6056,77);t6(1,:)];%构造整体的 z 分量 | |
mesh([a;xt;xt;xt;xt;t4;t4;t4;t4;t4;xt;xt;xt;a;a],[b;yt;yt;yt;yt;t5;t5;t5;t5;t5;yt;yt;yt;b;b],zt); | |
hold on; | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%绘制正方体部分 | |
xq=[-1.2054,-1.1785:0.0827:-0.6363,-0.6363]; | |
yq=[-0.2777,-0.2087:0.0827:0.2087,0.2736]; | |
[xq,yq]=meshgrid(xq,yq); | |
xq(1,1)=-1.1785; | |
xq(8,1)=-1.1785; | |
yq(1,1)=-0.2087; | |
yq(8,1)=0.2048; | |
t9=ones(8,9); | |
zq1=t9.*0.3398; | |
zq2=t9.*0.6056; | |
mesh(xq,yq,zq1);%画出上下两个面 | |
hold on; | |
mesh(xq,yq,zq2); | |
hold on; | |
xq=[xq(:,1)',xq(1,2:8),xq(:,9)',fliplr(xq(1,1:8))]; | |
yq=[fliplr(yq(:,1)'),yq(1,2:8),yq(:,9)',fliplr(yq(8,1:8))]; | |
zq1=[linspace(1,1,31)]; | |
zq2=[0.3398:0.0827:0.6056,0.6056]; | |
[zq1,zq2]=meshgrid(zq1,zq2); | |
mesh([xq;xq;xq;xq;xq],[yq;yq;yq;yq;yq],zq2);%绘制立面 | |
hold on; | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%绘制圆盘部分 | |
[xp,yp]=meshgrid(x(1,:),y(1,:)); | |
for i=1:1:51%由程序将正方形网格移成圆形 | |
for j=1:1:51 | |
m=i; | |
n=j; | |
while(sqrt(xp(m,n)*xp(m,n)+yp(m,n)*yp(m,n))>1.01) | |
if xp(m,n)>0 | |
if yp(m,n)<0 | |
m=m+1; | |
else | |
m=m-1; | |
end | |
else | |
if yp(m,n)<0 | |
m=m+1; | |
else | |
m=m-1; | |
end | |
end | |
end | |
xp(i,j)=xp(m,n); | |
yp(i,j)=yp(m,n); | |
end | |
end | |
xp=xp.*1.1299; | |
yp=yp.*1.1299; | |
mesh(xp,yp,ones(51).*0.1140); | |
mesh(xp,yp,ones(51).*0.1499);%绘制上下两个面 | |
xp=[x.*1.1299]; | |
yp=[y.*1.1299]; | |
zp=[z(1,:)+0.1140;z(2,:).*0.1499]; | |
mesh(xp,yp,zp);%绘制立面 | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%绘制阶梯部分 | |
m=[-1.0111,-1.1785,-1.2595,-1.3367,-1.4275,-1.4923,-1.5834,-1.6434,-1.7455,-1.7455,-1.6434,-1.5834,-1.4923]; | |
m=[m,fliplr(m),x(1,[29:-1:23]).*1.1299,-1.0111]; | |
m=[m;m]; | |
n=[0.5044,0.3369,0.3076,linspace(0.2990,0.2990,6),0.1292,0.1187,0.1018,0.0586]; | |
n=[n,-fliplr(n),y(1,[29:-1:23]).*1.1299,0.5044]; | |
n=[n;n]; | |
t1=[0.1119,0.0739,0.0739,0.0359]; | |
t2=[linspace(0.1499,0.1499,4),0.1119,t1,fliplr(t1),t1,fliplr(t1),0.1119,linspace(0.1499,0.1499,12)]; | |
k=[t2;t2-0.0359]; | |
mesh(m,n,k); | |
hold on; | |
m1=[-1.0111,-1.0111;-1.1758,-1.1785;-1.2595,-1.2595;-1.3367,-1.3367;-1.4275,-1.4275;-1.4923,-1.4923]; | |
n1=[0.5044,-0.5044;0.3369,-0.3369;0.3076,-0.3076;0.2990,-0.2990;0.2990,-0.2990;0.2990,-0.2990]; | |
k1=[ones(4,2).*0.1499;0.1119,0.1119;0.1119,0.1119]; | |
mesh(m1,n1,k1); | |
hold on; | |
mesh(m1,n1,k1-0.0359); | |
hold on; | |
m2=[-1.4923,-1.4923;-1.5834,-1.5834;-1.6434,-1.6434;-1.7455,-1.7455]; | |
n2=[0.2990,0.0586;0.2990,0.1018;0.2990,0.1187;0.2990,0.1292]; | |
k2=[0.1119,0.1119;0.0739,0.0739;0.0739,0.0739;0.0359,0.0359]; | |
mesh(m2,n2,k2); | |
hold on; | |
mesh(m2,n2,k2-0.0359); | |
hold on; | |
mesh(m2,-n2,k2); | |
hold on; | |
mesh(m2,-n2,k2-0.0359); | |
hold on; | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%其他 | |
map=jet(16); | |
%cl=16;%可设置 16 种颜色(1-16) | |
%map1=map(cl,:); | |
%colormap(map1); | |
alpha(0.8);%调节透明度(0-1) | |
axis equal; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment