How to form a sphere with 1's in a 3D matrix
Show older comments
I have a matrix X=zeros(m,n,p);
If I know the radius value and matrix index for centroid position of sphere, how do I distribute 1's in the matrix such that it forms a sphere in the matrix? (Ignore part of sphere if it goes outside matrix dimensions)
Thank you.
Accepted Answer
More Answers (2)
Using ndgridVecs from the file exchange
[dX,dY,dZ]=ndgridVecs((1:m)-cm, (1:n)-cn, (1:p)-cp); %centroid=[cm,cn,cp]
sphere3D=(dX.^2 + dY.^2 + dZ.^2<=radius^2); %the result
1 Comment
Vinit Nagda
on 31 Aug 2021
[m, n, p] = deal(10, 12, 14);
[xg, yg, zg] = ndgrid(1:m, 1:n, 1:p);
xc = round(m/2); yc=round(n/2); zc=round(p/2); % center
r = 3;
idx = (xg-xc).^2 + (yg-yc).^2 + (zg-zc).^2 <= r.^2;
s = false(size(xg)); % the sphere
s(idx) = true;
plot3(xg(s), yg(s), zg(s), 'o');
grid on; box on
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!
