如何在matlab 中用球坐标,柱坐标,编程画图。有相关书籍亦可~

如何在matlab 中用球坐标,柱坐标,编程画图。有相关书籍亦可~,第1张

%画球

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11334868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存