1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > matlab中应用surf函数画球形物体的三维坐标变换 从球坐标系转换到笛卡尔坐标系

matlab中应用surf函数画球形物体的三维坐标变换 从球坐标系转换到笛卡尔坐标系

时间:2022-08-23 17:02:11

相关推荐

matlab中应用surf函数画球形物体的三维坐标变换 从球坐标系转换到笛卡尔坐标系

在Matlab中采用surf函数画三维图时,该函数使用笛卡尔坐标系绘制图形,因此在某些球形图案的绘制中,直接使用(theta,phi,z)参数无法得到球形图案,需要将图案对应的点从球坐标转变为笛卡尔坐标,从而得到球形图案。

调用如下的子程序可以完成相应的坐标变换。

代码如下:

function [Spherical_x, Spherical_y, Spherical_z] = rectangular2spherical(theta, phi, z)%因为画图时使用surf来画图,所以要保证theta,phi,z的矩阵大小相同%相当于三维空间中,一个点的三个坐标。R = abs(z);%z = z - max(z); %如果z小于零,可以只取较大的数%R=z(z + 20 > 0); Spherical_x = R .* sin(theta) .* cos(phi);Spherical_y = R .* sin(theta) .* sin(phi);Spherical_z = R .* cos(theta);end

看起来很简单的,下面写个主程序调用一下。

clearclose allclc%用(theta,phi,z)坐标画一个平面,然后变换为(x,y,z)形成一个球。theta = -90 : 1 : 90;phi = 0 : 1 : 360;z = ones(length(theta), length(phi));[theta_xx, phi_yy] = meshgrid(phi, theta);figure(1)surf(theta_xx, phi_yy, z)title('直角坐标系')shading flat %去掉网格的边沿颜色[theta_xx, phi_yy, z] = rectangular2spherical(theta_xx, phi_yy, z); %调用上面函数figure(2)surf(theta_xx, phi_yy, z)title('球坐标系')shading flataxis equal %坐标系对称

结果如下:

编者水平有限,殷切希望批评指正。有相关疑问也可以评论咨询,谢谢啦_

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。