Plot a family of circles in 3D

4 vues (au cours des 30 derniers jours)
Snirisa  Gödel
Snirisa Gödel le 2 Oct 2013
I have the following code for plotting 100 circles in separate height planes where the radius increases from 1 to 100.
if true
for r=1:1:100
t=linspace(0,2*pi);
x=r*cos(t);
y=r*sin(t);
for h=100:100:10000
z = 100 * r * ones(1, length(t));
plot3(x,y,z);
if r == 1 && h == 100
hold on;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
end
drawnow;
end
end
Like this:
[1]: http://i.stack.imgur.com/dsPX1.png
*Question*
Now I want to change the code in order for the radius to *decrease* from 100 to 1, i.e turn the cone upside down. So the code should probably read like this but i can't get it to work:
for r=100:-1:1
t=linspace(0,2*pi);
x=r*cos(t);
y=r*sin(t);
for h=100:100:10000
z = 100 * r * ones(1, length(t));
plot3(x,y,z);
if r == 100 && h == 100
hold on;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
end
drawnow;
end
end

Réponse acceptée

Harsheel
Harsheel le 3 Oct 2013
Modifié(e) : Harsheel le 3 Oct 2013
The height is controlled by 'z' and not 'h'. In the first case, when r=1, z= 100*1*k (where k=ones(1, length(t))). If you want to reverse the cone then, z should be 100*1*k when r=100. Which means:
z = 100 * (101-r) * ones(1, length(t));
  1 commentaire
Snirisa  Gödel
Snirisa Gödel le 3 Oct 2013
Thank you, I appreciate it.

Connectez-vous pour commenter.

Plus de réponses (1)

Youssef  Khmou
Youssef Khmou le 3 Oct 2013
Sniriza,
I agree with Harsheel, or you can simply add a minus to z :
z = -(100 * r * ones(1, length(t)));

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by