绘制Theta和Phi的函数作为球体上的颜色图

时间:2015-01-07 09:01:11

标签: matlab surface

我正在我的课堂上准备这个练习在Matlab上(作为CS工程师的应用物理实验室的一部分),你必须模拟表面上的温度波动,行星的一侧总是面向母星,一个一边总是远离它(一半冷冻半烤)。这是我正在使用的功能:

T(Theta,Phi)= T0 + T1 * sin ^ 2(Theta)+ T2 *(1 + sin(Phi))

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

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

我想要的东西如下图所示,但当然根据我上面给出的功能给出了不同的颜色分布。

enter image description here

1 个答案:

答案 0 :(得分:3)

这是部分原因:

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

the sphere

现在您仍然需要调整初始条件T0T1T3,并且还可以添加一些轮换以防您的热情"和"冷"积分不在极点。