how to write this code to generate what i want

Hi! I'm trying to write a code in mesh to ilustrate some a surface that in determined by the ecuation:
x,y,z are all coordonates on the axis. the surface should look like this:
but i can't get it to look the same. My code is:
clear all; close all; clc;
xmin=-pi;xmax=pi;nx=50;
x=linspace(xmin,xmax,nx);
ymin=-pi;ymax=pi;ny=50;
y=linspace(ymin,ymax,ny);
[X,Y]=meshgrid(x,y);
alfa=59*pi/180;
Z=sqrt(X.^2./tan(alfa)^2)+sqrt(Y.^2./tan(alfa)^2);
figure
mesh(X,Y,Z);
axis equal
can anyone please help me?

 Accepted Answer

clear all; close all; clc;
xmin=-pi;xmax=pi;nx=50;
x=linspace(xmin,xmax,nx);
ymin=-pi;ymax=pi;ny=50;
y=linspace(ymin,ymax,ny);
[X,Y]=meshgrid(x,y);
alfa=59*pi/180;
% Z=sqrt(X.^2./tan(alfa)^2)+sqrt(Y.^2./tan(alfa)^2);
Z=sqrt((X.^2+Y.^2)./tan(alfa)^2);
figure
mesh(X,Y,Z);
hold on
mesh(X,Y,-Z);
axis equal

3 Comments

You can also leave alfa in degrees and use tand instead of tan.
Thanl you! You helped me a lot!
Voss
Voss on 20 Mar 2025
Edited: Voss on 25 Mar 2025
You're welcome! Any questions, let me know. Thanks!

Sign in to comment.

More Answers (0)

Categories

Asked:

on 20 Mar 2025

Edited:

on 25 Mar 2025

Community Treasure Hunt

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

Start Hunting!