編集
関数 f(x,y,z) は、S2 の単位球面 (x,y,z) 上で定義されます。色だけでなく、単位球にプロットする必要があります。
私は surf(x,y,z,f) を試しましたが、f の値に関して球に色を付けるだけです。しかし、単位球を「卵」に変換する必要があります。つまり、ある時点で関数の値が f=2 の場合、たとえば、この時点で、元の z の値の 2 倍の単位法線方向に球を引き伸ばす必要があります。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