Fill cylinder inside a matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Given a 3d matrix:
vx = 1; % mm
vy = 1; % mm
vz = 1; % mm
nx = 500; %Number of elements in x direction
ny = 500; %Number of elements in y direction
nz = 100; %Number of elements in z direction
x = linspace(-vx/2,vx/2,nx);
y = linspace(-vy/2,vy/2,ny);
z = linspace(-vz/2,vz/2,nz);
[X,Y,Z] = ndgrid(x,y,z);
mat= zeros(size(X)); %Matrix to fill with cyliinders
and 2 random points on the edge of the cube,
How can I make a cylinder of radius R between those 2 points?
I want to fill up the binary matrix with 1 where the cylinder is placed and 0 everywhere else.
Thank you for your help.
0 comentarios
Respuesta aceptada
Matt J
el 13 de Feb. de 2019
Editada: Matt J
el 13 de Feb. de 2019
Suppose the two end points are r1=[x1,y1,z1], r2=[x2,y2,z2]
[X,Y,Z] = ndgrid(x,y,z);
dXYZ=[X(:),Y(:),Z(:)].'-r1(:);
u=r1-r2;
u=repmat(u(:)./norm(u),1,nx*ny*nz);
mat=vecnorm( cross(dXYZ,u) ,2,1 )<=R;
mat=reshape(mat,nx,ny,nz);
3 comentarios
Ver también
Categorías
Más información sobre Computational Geometry en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!