Randomly generated cubes in cylindrical volumes in MATLAB

5 visualizaciones (últimos 30 días)
hongtao xu
hongtao xu el 23 de Sept. de 2023
Comentada: KSSV el 9 de Oct. de 2023
Hey
I want to generate n cubes of a given side length at any position within a given cylinder volume. Following the condition of not intersecting each other.
Can someone help me with this.
Regards
Om
  5 comentarios
hongtao xu
hongtao xu el 25 de Sept. de 2023
@Image AnalystI need to output a 3D stereogram because I need to import into comsol.just randomly place them one-by-one at a random location wherever they might fit,Because the volume of these cubes doesn't need to fill the entire cylinder,the cube I set is about 85 percent volume,and the rest is air.
hongtao xu
hongtao xu el 26 de Sept. de 2023
Just like this one.

Iniciar sesión para comentar.

Respuesta aceptada

KSSV
KSSV el 26 de Sept. de 2023
% Draw cyliner
Radius = 1. ; % Radius of the cylindrical shell
Height = 2. ; % Height of the Cylinder
%
NH = 7 ; % Number of Elements on the Height
NT = 10 ; % Number of Angular Dicretisation
% Discretizing the Height and Angle of the cylinder
nH = linspace(0,Height,10) ;
nT = linspace(0,2*pi,100) ;
[H, T] = meshgrid(nH,nT) ;
% Convert grid to cylindrical coordintes
X = Radius*cos(T);
Y = Radius*sin(T);
Z = H ;
% DRaw randoom cubes
% First make random points so that cubes donot intersect
L = 0.2 ; % L, B, H of cube
dL = L+0.1 ;
x = -(Radius-L):dL:(Radius-L) ;
y = x ;
z = L:dL:Height-L ;
%
[xx,yy,zz] = meshgrid(x,y,z) ;
xx = xx(:) ; yy = yy(:) ; zz = zz(:) ;
% Remove points lying outside the cylinder
idx = inpolygon(xx,yy,(Radius-L)*cos(nT),(Radius-L)*sin(nT)) ;
xx = xx(idx) ; yy = yy(idx) ; zz = zz(idx) ;
% randomly select few points
N = 100 ;
idx = randsample(1:length(xx),N) ;
xc = xx(idx) ; yc = yy(idx) ; zc = zz(idx) ;
figure
hold on
plot3(X',Y',Z,'k')
plot3(X,Y,Z,'k')
axis equal
for i = 1:N
plotcube([L L L],[xc(i) yc(i) zc(i)]);
drawnow
end
You may download the function plot cube.
  2 comentarios
hongtao xu
hongtao xu el 9 de Oct. de 2023
Thanks,it looks perfect.
KSSV
KSSV el 9 de Oct. de 2023
Thanks is accepting/ voting the answer. :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Language Fundamentals en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by