MATLAB: Shaded surface

plotshadedsurface

Hi
I have 3 Arrays with values of which i am doing a 3D plot. Currently i am using "plot3()". I would rather like to have a shaded surface…
x(i)=[cos(psi)*cos(phi)*r];
y(i)=[cos(psi)*sin(phi)*r];
z(i)=[sin(psi)*r];
plot3(x,y,z)
Any Hints?

Best Answer

St11=100;
Sc11=St11*2/3;
St22=80;
Sc22=St22*2/3;
S=60;
i1 = 0;
r = NaN(101,51);
for phi=0:pi/50:2*pi
i1 = i1+1;
i2 = 0;
if cos(phi)>=0
X=St11;
else
X=Sc11;
end
if sin(phi)>=0
Y=St22;
else
Y=Sc22;
end
for psi=-pi/2:pi/50:pi/2
i2=i2+1;
F=@(r0)(((cos(phi)*cos(psi)*r0)/X)^2-(cos(phi)*cos(psi)*r0*sin(phi)*cos(psi)*r0)/(X^2)+((sin(phi)*cos(psi)*r0)/Y)^2+(r0*sin(psi)/S)^2-1)^2;
r(i1,i2)=abs(fminsearch(F,0));
end
end
[psi,phi] = meshgrid(-pi/2:pi/50:pi/2,0:pi/50:2*pi);
x=cos(psi).*cos(phi).*r;
y=cos(psi).*sin(phi).*r;
z=sin(psi).*r;
surf(x,y,z)