Borrar filtros
Borrar filtros

Trying to plot a 3d closed cylinder

79 visualizaciones (últimos 30 días)
Maor Levy
Maor Levy el 10 de Feb. de 2013
Comentada: Sharanya Srinivas el 27 de Mayo de 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

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 10 de Feb. de 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 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 10 de Feb. de 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
Maor Levy
Maor Levy el 10 de Feb. de 2013
Thank you.

Iniciar sesión para comentar.

Más respuestas (4)

Sharanya Srinivas
Sharanya Srinivas el 16 de Mzo. de 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')

Md Mohinoddin
Md Mohinoddin el 24 de Oct. de 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

Md Mohinoddin
Md Mohinoddin el 24 de Oct. de 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);

Kimberly Nowak
Kimberly Nowak el 26 de Mayo de 2021
Editada: Kimberly Nowak el 26 de Mayo de 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 comentario
Sharanya Srinivas
Sharanya Srinivas el 27 de Mayo de 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')

Iniciar sesión para comentar.

Categorías

Más información sobre Bodies en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by