Trying to plot a 3d closed cylinder
124 views (last 30 days)
Show older comments
Maor Levy
on 10 Feb 2013
Commented: Sharanya Srinivas
on 27 May 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
Accepted Answer
Azzi Abdelmalek
on 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 Comments
Azzi Abdelmalek
on 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
More Answers (4)
Sharanya Srinivas
on 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 Comments
Md Mohinoddin
on 24 Oct 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 Comments
Md Mohinoddin
on 24 Oct 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 Comments
Kimberly Nowak
on 26 May 2021
Edited: Kimberly Nowak
on 26 May 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 Comment
Sharanya Srinivas
on 27 May 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')
See Also
Categories
Find more on Bodies in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!