Shaded surface
조회 수: 2 (최근 30일)
이전 댓글 표시
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?
댓글 수: 0
채택된 답변
Grzegorz Knor
2011년 11월 16일
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)
댓글 수: 0
추가 답변 (2개)
Grzegorz Knor
2011년 11월 16일
[psi phi] = meshgrid(0:0.05:2*pi);
r = 1;
x=cos(psi).*cos(phi).*r;
y=cos(psi).*sin(phi).*r;
z=sin(psi).*r;
surf(x,y,z)
shading interp
By the way, to draw sphere you could use sphere function:
sphere
axis equal
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!