Creating multiple cylinders in different coordinates
4 次查看(过去 30 天)
显示 更早的评论
I want to create cylinders with similar diameters and heights at various locations in x,y coordinates.
Could you help me
Thank you.
0 个评论
采纳的回答
Star Strider
2024-2-27
编辑:Star Strider
2024-3-1
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 个)
Aquatris
2024-2-27
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surface and Mesh Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!