フィルターのクリア

Trying to plot a 3d closed cylinder

79 ビュー (過去 30 日間)
Maor Levy
Maor Levy 2013 年 2 月 10 日
コメント済み: Sharanya Srinivas 2021 年 5 月 27 日
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
  1 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 2 月 10 日
Post your code.

サインインしてコメントする。

採用された回答

Azzi Abdelmalek
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
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
Maor Levy
Maor Levy 2013 年 2 月 10 日
Thank you.

サインインしてコメントする。

その他の回答 (4 件)

Sharanya Srinivas
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')

Md Mohinoddin
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

Md Mohinoddin
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);

Kimberly Nowak
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
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 ExchangeBodies についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by