Trying to plot a 3d closed cylinder
    23 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Maor Levy
 il 10 Feb 2013
  
    
    
    
    
    Commentato: Sharanya Srinivas
 il 27 Mag 2021
            I tried many options but I can't get a 3d closed cylinder. I only get hollow cylinder.
Trying to get something like this:

But getting this:

Can someone please help me.
My code:
[x1 y1] = GetCircle(1, 0, 0, 0, 2*pi);
z1 = zeros(1, length(x));
z2 = ones(1, length(x));
x = [x1;x1];
y = [y1;y1];
z = [z1;z2];
surf(x,y,z);
where GetCircle() is:
function [x y] = GetCircle(r, h, k, a, b)
    t = linspace(a, b, 50);
    x = r*cos(t) + h;
    y = r*sin(t) + k;
end
Risposta accettata
  Azzi Abdelmalek
      
      
 il 10 Feb 2013
        To do this you could use cylinder function
r=2
[X,Y,Z] = cylinder(r)
h=mesh(X,Y,Z,'facecolor',[1 0 0])
For what you are looking for, if you have a VRML tool box, you can get the same cylinder. Can you tell what this cylinder is for?
5 Commenti
  Azzi Abdelmalek
      
      
 il 10 Feb 2013
				r=0.5
[X,Y,Z] = cylinder(r)
for k=1:5
h=mesh(X,Y,Z,'facecolor',[0 1 1])
hold on
X=X+1
end
Più risposte (4)
  Sharanya Srinivas
 il 16 Mar 2018
        To create an illusion of a solid cylinder, you have to fill in the floor and ceil of the cylinder. You can do so using
r = 2; n = 100;   
[X,Y,Z] = cylinder(r,n);
figure;  
surf(X,Y,Z,'facecolor','r','LineStyle','none');
hold on
fill3(X(1,:),Y(1,:),Z(1:),'r')
fill3(X(2,:),Y(2,:),Z(2,:),'r')
0 Commenti
  Md Mohinoddin
 il 24 Ott 2017
        r=0.5 [X,Y,Z] = cylinder(r) for k=1:5 h=mesh(X,Y,Z,'facecolor',[0 1 1]) hold on X=X+1 end
0 Commenti
  Md Mohinoddin
 il 24 Ott 2017
        [x1 y1] = GetCircle(1, 0, 0, 0, 2*pi); z1 = zeros(1, length(x)); z2 = ones(1, length(x)); x = [x1;x1]; y = [y1;y1]; z = [z1;z2]; surf(x,y,z);
0 Commenti
  Kimberly Nowak
 il 26 Mag 2021
        
      Modificato: Kimberly Nowak
 il 26 Mag 2021
  
      Habt ihr eine idee wo der fehler liegt?
Aufgabe ist folgende: 
Kreise zeichnen (3.27) Schreiben Sie eine Funktion [x,y]=getCircle(mittelpunkt, radius), die Ihnen die x- und y-Koordinante eines Kreises mit dem genannten Mittelpunkt und Radius zurückgibt. Verwenden Sie hierfür die folgende Transformation:
x=r*cos(t)+xm
y=r*sin(t)+ym
mit t[0,2*pi]
function [x,y] = getCircle(mittelpunkt, radius)
numPunkt = 1000;
t = linspace(0,2*pi,numPunkt);
x = radius*cos(t)' + mittelpunkt(1);
y = radius*sin(t)' + mittelpunkt(2);
end
1 Commento
  Sharanya Srinivas
 il 27 Mag 2021
				The function does work the way you are expecting. It might have to do with how you are calling it. 
clear; close all; 
mittelpunkt = [5,5] ; 
radius = 5 ; 
[x,y] = getCircle(mittelpunkt, radius); 
figure; 
plot(x,y,'r')
hold on; plot(mittelpunkt(1),mittelpunkt(2),'b*')
xlabel('x'); ylabel('y')
title('Circle')
Vedere anche
Categorie
				Scopri di più su View and Analyze Simulation Results in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!