Creating multiple cylinders in different coordinates
    7 views (last 30 days)
  
       Show older comments
    
I want to create cylinders with similar diameters and heights at various locations in x,y coordinates.
Could you help me
Thank you.
0 Comments
Accepted Answer
  Star Strider
      
      
 on 27 Feb 2024
        
      Edited: Star Strider
      
      
 on 1 Mar 2024
  
      Perhaps this — 
[X,Y,Z] = cylinder(1,20);
cm = colormap(turbo(10));
figure
hold on
for k = 1:10
    ofst = randi(9,2);
    surf(X+2*ofst(1), Y+2*ofst(2), Z*5, 'FaceColor',cm(k,:))
end
hold off
grid on
axis('equal')
view(-27,30)
I set them to be different colours.  If you wnat them all the same colour, just use: 
surf(X+2*ofst(1), Y+2*ofst(2), Z*5)
instead.
EDIT — (1 Mar 2024 at 19:30)
In response to the rpoated request —  
[X,Y,Z] = cylinder(9,20);
ofst = [0 0; 20 0; 10 20];
a = linspace(0,2*pi);
xc = 9*cos(a);
yc = 9*sin(a);
figure
hold on
for k = 1:size(ofst,1)
    surf(X+ofst(k,1), Y+ofst(k,2), Z*65, 'FaceColor','g', 'EdgeColor','g', 'FaceAlpha',0.25)
    plot3(xc+ofst(k,1), yc+ofst(k,2), 65*ones(size(a)), '-k', 'LineWidth',1)
    plot3(xc+ofst(k,1), yc+ofst(k,2), 0*ones(size(a)), '-k', 'LineWidth',1)
end
hold off
grid on
axis('equal')
view(-27,30)
.
2 Comments
More Answers (2)
  Aquatris
      
 on 27 Feb 2024
        Not sure how you want them to look or what you need but here is one simple way
[X,Y,Z] = cylinder(2); % create X,Y,Z coordinates for a cyclinder with a radius 2
% define center positions
cycPos1 = [1 1 1];
cycPos2 = [4 4 4];
cycPos3 = [-3 -3 -3];
figure(1)
plotCyclinder(cycPos1,X,Y,Z)
plotCyclinder(cycPos2,X,Y,Z)
plotCyclinder(cycPos3,X,Y,Z)
% function that draws the cyclinders
function plotCyclinder(pos,X,Y,Z)
surf(pos(1)+X,pos(2)+Y,pos(3)+Z)
hold on
end
See Also
Categories
				Find more on Surface and Mesh Plots 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!






