Trying to plot a 3d closed cylinder
65 次查看(过去 30 天)
显示 更早的评论
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
采纳的回答
Azzi Abdelmalek
2013-2-10
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 个评论
Azzi Abdelmalek
2013-2-10
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
更多回答(4 个)
Sharanya Srinivas
2018-3-16
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 个评论
Md Mohinoddin
2017-10-24
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 个评论
Md Mohinoddin
2017-10-24
[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 个评论
Kimberly Nowak
2021-5-26
编辑:Kimberly Nowak
2021-5-26
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 个评论
Sharanya Srinivas
2021-5-27
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')
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!