How to plot a cone via fsurf?

Hello! I am experiencing some problems when trying to plot a cone in ML using the fsurf function.
When using meshgrid and surf everything works as expected (the height of the cone is supposed to be three times the radius, that's where the formula for z comes from):
radius = 2;
r = linspace(0,radius);
phi = linspace(0,2*pi);
[R, PHI] = meshgrid(r,phi);
X = R .* cos(PHI)
Y = R .* sin(PHI)
Z = -3*R + 3 * radius;
surf(X,Y,Z);
I have this example for a cylinder in ML:
R = 2;
xZ = @(t,z) R*cos(t);
yZ = @(t,z) R*sin(t);
zZ = @(t,z) z;
fsurf(xZ, yZ, zZ);
This example works fine but I guess I have not really understood how everything comes together or how these anonymus functions work. I think this example can be modified to plot a cone by altering zZ but I do not really know how. Maybe someone can give me a push in the right direction.

 Accepted Answer

Laura Schimmler
Laura Schimmler on 5 Nov 2019
Edited: Laura Schimmler on 5 Nov 2019
I have found a solution and in case anyone should come across the same problem:
xCone = @(s,t) (coneRadius - 1/3 * t) .* cos(s);
yCone = @(s,t) (coneRadius - 1/3 * t) .* sin(s);
zCome = @(s,t) t;
fsurf(xCone, yCone, zCone, [0, 2*pi, 0, 3*coneRadius]);
This will plot a 3D cone with a given radius (coneRadius) using fsurf. It is important to know that this cone has a fixed height of three times its radius.

2 Comments

Congratulations! +1!
I could not get my code to work when I experimented with it to see if I could provide a working result.
Note that the last function should be:
zCone = @(s,t) t;
Typographical errors make our lives more interesting!
Laura Schimmler
Laura Schimmler on 5 Nov 2019
Edited: Laura Schimmler on 5 Nov 2019
Haha, yes, they do. :) Will fix the typo now.
However: It is important to know that this cone has a fixed height of three times its radius. (Which was a requirement in this specific task.)

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!