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?

 Risposta accettata

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 Commenti

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

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by