为什么不是球形图?如何在Matlab中绘制三维极坐标图?
我玩过这个,但试图找到一个默认函数来实现这个。如何进行三维极坐标绘图为什么不是球形图?如何在Matlab中绘制三维极坐标图?,matlab,math,polar-coordinates,Matlab,Math,Polar Coordinates,我玩过这个,但试图找到一个默认函数来实现这个。如何进行三维极坐标绘图 我试图帮助这家伙可视化不同的积分。您的代码中有几个问题: 您已经使用sin(θ)*cos(phi)和sin(θ)*sin(phi)位将球坐标转换为笛卡尔坐标。你为什么打电话给pol2cart(而且,我们不是在极坐标系下工作!) 正如纳坦所指出的,在你的图中没有三维空间(即z)。对于单位半径,r可以在球面域中省略,球面域完全由theta和phi定义,但在笛卡尔域中,有三个x,y和z。z的公式是z=cos(θ)(单位半径) 您没
我试图帮助这家伙可视化不同的积分。您的代码中有几个问题:
- 您已经使用
和sin(θ)*cos(phi)
位将球坐标转换为笛卡尔坐标。你为什么打电话给pol2cart(而且,我们不是在极坐标系下工作!)李>sin(θ)*sin(phi)
- 正如纳坦所指出的,在你的图中没有三维空间(即
)。对于单位半径,z
可以在球面域中省略,球面域完全由r
和theta
定义,但在笛卡尔域中,有三个phi
,x
和y
。z
的公式是z
(单位半径)李>z=cos(θ)
- 您没有阅读的文档,其中说明:
绘制surf(Z,C)
的高度,这是一个在几何矩形网格上定义的单值函数,并使用矩阵Z
,假设其大小与C
相同,来为曲面着色 换句话说,您的Z
行仅绘制矩阵surf(x,y)
,并使用x
作为颜色贴图对其进行着色y
[r,t] = meshgrid(linspace(0,2*pi,361),linspace(0,pi,361));
[x,y]=pol2cart(sin(t)*cos(r),sin(t)*sin(r));
%[x,y]=pol2cart(r,t);
surf(x,y);
@natan我可能弄乱了术语:我想让它看起来像2d中的圆圈和3D中的球体。您添加的当前代码只有两个坐标
r
和t
,所以我不明白第三维应该从何而来。。。常规极坐标图可以。@natan半径假定为1。r代表$\rho$,t$代表$\theta$。
[f,t] = meshgrid(linspace(0,2*pi,361),linspace(0,pi,361));
x = sin(t)*cos(f);
y = sin(t)*sin(f);
z = cos(t);
surf(x,y,z)