Plotting two surfaces in cylindrical coordinates

Hello,
I need to plot the following surfaces given by:
,
where ρ is the radius, z is the height and ϕthe azimuth. are constants with .
The first surface denotes a torus.

回答(1 个)

theta = linspace(0, 10 * pi);
z = linspace(0, 5);
[Theta, Z] = meshgrid(theta, z);
% Set the constants
% c >= a
a = 5;
c = 10;
r = sqrt(c ^ 2 - a ^ 2 - z .^ 2) + c;
[x, y, z] = pol2cart(Theta, r, Z);
mesh(x, y, z);
axis equal

2 个评论

So to print the second surface, I should do the something like the following?(which produces an error)
r=sqrt(tan(theta)*2*a.*z-z.^2+a^2);
[x, y, z] = pol2cart(Theta, r, Z);
mesh(x, y, z);
I implemented it, but I faced the complex datatype issue, so I used abs() to fix it, if its wrong then please choose appropriate parameters for the same:
clc
clear all
close all
theta = linspace(0, 2 * pi);
z = linspace(0, 5);
[Theta, Z] = meshgrid(theta, z);
% Set the constants
% c >= a
a = 10;
c = 10;
phi0 = 0;
r = abs(sqrt(2 * a * z .* tan(theta - phi0) - z .^ 2 + a ^ 2)) ;
[x, y, z] = pol2cart(Theta, r, Z);
mesh(x, y, z);
axis equal

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by