# Surface of a equation

16 views (last 30 days)

Show older comments

Daniel Jaló
on 15 Sep 2012

Commented: Walter Roberson
on 11 Nov 2020

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 Comments

### Accepted Answer

Wayne King
on 15 Sep 2012

Edited: Wayne King
on 15 Sep 2012

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 Comments

Walter Roberson
on 11 Nov 2020

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')

### More Answers (3)

Jürgen
on 15 Sep 2012

##### 0 Comments

Javier
on 15 Sep 2012

Edited: Walter Roberson
on 11 Nov 2020

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 Comments

auto2060
on 16 Nov 2016

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 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!