%画球
r=1
theta=linspace(0,pi)
phi=linspace(0,2*pi)
[tt,pp]=meshgrid(theta,phi)
x=r.*sin(tt).*cos(pp)
y=r.*sin(tt).*sin(pp)
z=r.*cos(tt)
%上面三句可以改成简单的一句:
%[x,y,z] = sph2cart(pp,pi/2-tt,r)
%其中的变换是matlab的球坐标定义与寻常不同造成的,可以看matlab的帮助
subplot(1,2,1)
mesh(x,y,z)
shading flat
axis square
%%%%%%%%%%%%%%%%%%%%%画柱
subplot(1,2,2)
[X,Y,Z] = cylinder(r,200)
%cylinder的具体用法可见matlab帮助,输入doc cylinder查看帮助
surf(X,Y,Z)
axis square
少了一个点
r=1
alpha = -pi:pi/100:pi
C=1.2
beta1=pi/6
beta=asin((2*C.^2*sin(beta1)-(2*C.^2 *(sin(beta1)).^2+4*(cos(beta1)*sin(alpha)).^2 .* (C.^2*(C.^2-2)+(cos(beta1)*sin(alpha)).^2).^(1/2)))./(2* (cos(beta1)*sin(alpha)).^2))
[x,y,z]=sph2cart(alpha,beta,r)
plot3(x,y,z,'Color','r', 'LineWidth',2)
hold on
matlab里面有直角坐标转成极坐标的函数cart2pol
函数功能:在MATLAB中, 该函数用于把笛卡尔坐标转换为极坐标(柱坐标)。
语法格式:
[THETA,RHO,Z] = cart2pol(X,Y,Z)
把三维笛卡尔坐标(X,Y,Z)转换为对应的柱坐标(THETA,RHO,Z)。THETA是沿逆时针方向与X轴正方向的夹角,RHO是点(X,Y,Z)在OXY平面上的投影与原点的距离,Z是(X,Y,Z)坐标距OXY平面的高度。
[THETA,RHO] = cart2pol(X,Y)
把二维笛卡尔坐标(X,Y)转换为对应的极坐标(THETA,RHO)。
相关函数:cart2sph,pol2cart, sph2cart
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)