Matlab 将θ和φ的函数绘制为球体上的颜色图

Matlab 将θ和φ的函数绘制为球体上的颜色图,matlab,surface,Matlab,Surface,我试图在我的课堂上用Matlab(作为CS工程师应用物理实验室的一部分)准备这个练习,你必须对行星表面的温度波动进行建模,这颗行星的一面总是面对母星,而另一面总是远离母星(半冻半烤)。以下是我正在使用的函数: T(θ,φ)=T0+T1*sin^2(θ)+T2*(1+sin(φ)) 我想在球体的表面上绘制上述函数作为颜色图,即表面上某点的颜色应表示该点的温度T。我该怎么做呢 到目前为止,我所做的一切给了我这样一个情节: 我想要的东西像下面的图像,但有不同的颜色分布,当然,根据我上面给出的函数 这

我试图在我的课堂上用Matlab(作为CS工程师应用物理实验室的一部分)准备这个练习,你必须对行星表面的温度波动进行建模,这颗行星的一面总是面对母星,而另一面总是远离母星(半冻半烤)。以下是我正在使用的函数:

T(θ,φ)=T0+T1*sin^2(θ)+T2*(1+sin(φ))

我想在球体的表面上绘制上述函数作为颜色图,即表面上某点的颜色应表示该点的温度T。我该怎么做呢

到目前为止,我所做的一切给了我这样一个情节:

我想要的东西像下面的图像,但有不同的颜色分布,当然,根据我上面给出的函数


这是部分原因:

T0 = 2 ; T1 = 30  ; T2 = 120 ; %// set your boundary conditions here

[X,Y,Z] = sphere(50) ; %// generate coordinates of a sphere
hs = surf(X,Y,Z)     ; %// display the sphere and retrieve the handle to the graphic object
axis equal           ; %// set the axis ratio so the sphere appear as a sphere
shading interp       ; %// small refinement to not see the grid, you can comment that

[azimuth,elevation,r] = cart2sph(X,Y,Z) ;               %// Convert cartesian coordinates to spherical referential
T = T0 + T1*sin(azimuth).^2 + T2.*(1+sin(elevation)) ;  %// Calculate the temperature according to your model
set(hs,'CData',T) ;                                     %// update the sphere graphic object with the new temperature as a collor coding


现在,您仍然需要调整初始条件
T0
T1
T3
,并且可能还需要添加一些旋转,以防“热”和“冷”点不在极点。

您所说的
“我想在球体表面上绘制上述函数”是什么意思?球体就是球体。你是说你想把颜色映射到一个球体上吗?或者你想用上面的形状创建一个闭合的3D对象,也就是说,只需使各自边上的边相交就可以了?这意味着,球体表面上某一点的颜色应该代表该点的温度值(θ,φ)。类似于这样。当然有不同的颜色分布,根据我在问题中给出的函数给出。一旦你创建了T,你也可以做surf(X,Y,Z,T)。@nivag,是的。我们甚至可以进一步减少线的数量,但是看到OP在绘制球形时遇到了困难,我选择将球体绘制和温度数据应用程序操作分开。谢谢Hoki!看起来和我想要的一模一样!