-2

编辑

在 S2 中的单位球体 (x,y,z) 上定义了一个函数 f(x,y,z)。我必须将它绘制在单位球体上,而不仅仅是按颜色。

我试过 surf(x,y,z,f) 但它只是根据 f 的值对球体着色。但我需要将单位球体转换为“蛋”。也就是说,如果在某个点函数 f=2 的值,例如 - 我必须在单位法线方向上将球体拉伸到 z 的原始值的两倍。对于 f 的所有点和值也是如此。

for i=1:N
     for ii=1:N1+1
         [x(i,ii) y(i,ii) z(i,ii)]=sph2cart(phi(ii),acos(cosTeta(i))+pi/2,RO);

         Y_exact(i,ii)=FrankeF(x(i,ii), y(i,ii), z(i,ii));
         cap_point=-0.5*x(i,ii)-0.5*y(i,ii)+1/sqrt(2)*z(i,ii);

         if cap_point>=cos(0.5)
             f_cap(i,ii)=2*cos(pi*acos(cap_point));
         end

     end
end

Y_exact=Y_exact+f_cap;

surf(x,y,z,Y_exact,'FaceColor','interp','EdgeColor','none','FaceLighting','phong');
shading interp
axis square
colorbar
4

2 回答 2

1
 for i=1:N
     for ii=1:N1+1       
[x1(i,ii) y1(i,ii) z1(i,ii)]=sph2cart(phi(ii),acos(cosTeta(i))+pi/2,RO+Y_exact(i,ii));
     end
  end

 figure(1);
 surf(x1,y1,z1,Y_exact,'FaceColor','interp','EdgeColor','none','FaceLighting','phong');
 shading interp
 axis normal
 colorbar 

这就是我想要的。 在此处输入图像描述

于 2013-11-05T08:13:50.710 回答
0

phi 和 teta - 只是我在单位球体(RO = 1)上的球坐标中的矩形节点网格。N 和 N1 它们的数量(NxN1 - 节点的总数) Y_exact - 我在球面上的函数(弗兰克函数)(NxN1 值)

首先,我在笛卡尔坐标中计算我的网格并计算 Y_exact 的值。然后在球体上的每个点中,我像 RO+Y_exact 一样拉伸球体,并计算笛卡尔坐标中 x 和 y 的相应新值。

结果,我收到了在单位球体上拉伸的函数 Y_exact!

当我获得足够的声誉时,我会用图片来支持这个解决方案

于 2013-11-05T08:44:54.350 回答