之前画了一把伞,伞的内部有一些图形没有删除,所以很难看。一把伞应该还有伞柄,但是伞柄是由圆柱体和半个有弯曲度的圆柱体构成的,并不能通过参数方程显示出来。收集到如下代码:
将%% Drawing code这段代码修改如下(其他代码段不变):
%% Drawing code
clear
clc
close
%%下面代码是画侧面
%这里的圆柱体高度为h,可调
h=4;
%如果嫌网格比较密集就将下面的步长d=0.12改大些
d=0.12;
[A,Z]=meshgrid(0:2*pi/fix(2*pi/(1.2*d)):2*pi,0:h/fix(h/d):h);
LX=cos(A);
LY=sin(A);
h1=mesh(LX,LY,Z);
axis equal
hold on
%%下面代码功能是画圆柱体上下面
x=-1:d:1;y=-1:d:1;
[X,Y]=meshgrid(x,y);
X(X.^2+Y.^2>1)=NaN;
Y(X.^2+Y.^2>1)=NaN;
h2=mesh(X,Y,X*0);
h3=mesh(X,Y,X*0+h);
有如下效果图:
想要画弯曲的伞柄,大致是个半圆,用到了初中的平移和三角函数,整体的不会画,请您补充,欢迎评论,大佬还请略过。代码经过修改后有如下:
%2022年5月3日16:17:40
%画一个有弯曲度的圆柱,原作者为:MATLAB论坛注册号
%% Drawing code
clear
clc
close
%%下面代码是画侧面
%这里的圆柱体高度为h,可调
h=4;
%如果嫌网格比较密集就将下面的步长d=0.12改大些
d=0.12;
%[A,Z]=meshgrid(0:2*pi/fix(2*pi/(1.2*d)):2*pi,0:h/fix(h/d):h);
[A,Z]=meshgrid(0:2*pi/fix(2*pi/(1.2*d)):2*pi,0:h/fix(h*3/d):h*3);
LX=cos(A);
LY=sin(A);
%h1=mesh(LX-(1/0.8)*Z,LY-(1/0.8)*Z,Z);
h1=mesh(LX-sqrt(abs(Z.^2-12^2)),LY-sqrt(abs(Z.^2-12^2)),Z);
axis equal
hold on
%%下面代码功能是原来画圆柱体的上下面,与现有圆柱体做对比
x=-1:d:1;y=-1:d:1;
[X,Y]=meshgrid(x,y);
X(X.^2+Y.^2>1)=NaN;
Y(X.^2+Y.^2>1)=NaN;
h2=mesh(X,Y,X*0);
h3=mesh(X,Y,X*0+h);
%%下面代码功能是现有有弯曲度画圆柱体的上下面
x=-1:d:1;y=-1:d:1;
[X,Y]=meshgrid(x,y);
X(X.^2+Y.^2>1)=NaN;
Y(X.^2+Y.^2>1)=NaN;
h2=mesh(X-12,Y-12,X*0);
h3=mesh(X,Y,X*0+h*3);
有如下效果:
如遇问题,请留言。