Surface of a equation
조회 수: 12(최근 30일)
표시 이전 댓글
Hi.
I want to plot the quadratic surface of a sphere:
x^2 + y^2 + z^2 = r , where r is equal to 1. Therefore:
x^2 + y^2 + z^2 = 1, where x, y and z are values between -1.5 and 1.5
Can anyone explain me how to do this? I've looked into mesh surfaces but I can only plot functions ( f(x,y) )..
Any help will be highly appreciated. Thanks.
댓글 수: 0
채택된 답변
Wayne King
2012년 9월 15일
편집: Wayne King
2012년 9월 15일
I think you meant to square r in your equation, and you cannot have a value between -1.5 and 1.5 if the radius is 1. The radius has to be 1.5. Think about what happens if x=0,y=0,z=1.5 as you stated must be a point that satisfies the equation x^2+y^2+z^2 = r^2
You should probably do it with spherical coordinates:
n = 100;
r = 1.5;
theta = (-n:2:n)/n*pi;
phi = (-n:2:n)'/n*pi/2;
cosphi = cos(phi); cosphi(1) = 0; cosphi(n+1) = 0;
sintheta = sin(theta); sintheta(1) = 0; sintheta(n+1) = 0;
x = r*cosphi*cos(theta);
y = r*cosphi*sintheta;
z = r*sin(phi)*ones(1,n+1);
surf(x,y,z)
xlabel('X'); ylabel('Y'); zlabel('Z')
Note that MATLAB has a function for this with a unit sphere, sphere.m
댓글 수: 2
Walter Roberson
2020년 11월 11일
Modifying some code from below, https://www.mathworks.com/matlabcentral/answers/48240-surface-of-a-equation#answer_243478
r = 7.5; xc = 4; yc = 3;
zl = 0; zh = 10;
fimplicit3(@(x,y,z) (x-xc).^2+(y-yc).^2-r^2,[xc-r xc+r yc-r yc+r zl zh], 'edgecolor', 'none')
추가 답변(3개)
Jürgen
2012년 9월 15일
[x,y,z] = sphere(); r = 5; figure,surf( r*x +cx, r*y+ cy, r*z +cz) wit (cx,,cy,cz) the center look at http://www.mathworks.com/matlabcentral/newsreader/view_thread/169373
댓글 수: 0
Javier
2012년 9월 15일
편집: Walter Roberson
2020년 11월 11일
Procedure done in Matlab R2012.
The problem that you want to solve gives complex solution for Z for arbitrary X and Y in [-1.5,1.5]. The square of X^2 + Y.^2 must be lower than 1, in other case,the solution for Z is a complex number (mesh function doesnt support complex data). To prove it, solve for Z. You get an square root of (1-(X.^2+Y.^2)). I show how to solve for arbitrary number X and Y lower than 0.70 (0.7071^2= 0.5).
Data=randn(10,10) % 10 is arbitrary. Matriz square.
u=find(Data>0.70);
d=find(Data<-0.70);
%Define limits of Data Matriz
Data(u)=0.70;
Data(d)=-0.70;
%Divide Data matriz in two
X=Data(:,1:5);
Y=Data(:,6:10);
%For arbitrary X and Y value Z must solve the equality
Z=feval(@(X,Y)[sqrt(1-(X.^2+Y.^2))],X,Y)
%Plot data
mesh(X,Y,Z)
If this solve your question please grade or make a comment to this answer. Best regards
Javier
댓글 수: 0
auto2060
2016년 11월 16일
So
r = 1;
fimplicit3(@(x,y,z) x.^2+y.^2+z.^2-r^2,[-1.5 1.5 -1.5 1.5 -1.5 1.5])
댓글 수: 0
참고 항목
범주
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!