I am attempting to run a monte carlo simulation modeling the photon transport in a sphere with two different layers. To run this code I need to generate a segmented sphere. The 100x100x100 slab example with four different layers looks like this:
seg = zeros(100,100,100); seg(:,:,10:25) = 1; seg(:,:,26:50) = 2; seg(:,:,51:75) = 3; seg(:,:,76:end) = 4; fid = fopen('seg.bin', 'wb'); fwrite(fid, seg, 'uint8'); fclose(fid);
How would I do something similar for a 50x50x50 sphere and an ellipsoid. The commands sphere() and ellipsoid() give me the coordinates for such a shape in an array, but I need to assign numbers as in the example above to a spherical volume.
Thank you so much!
No products are associated with this question.
Something like this?
Rx = 1; %<-- Change these to make an ellipse instead Ry = 1; %<-- Change these to make an ellipse instead Rz = 1; %<-- Change these to make an ellipse instead
[X,Y,Z] = ndgrid(linspace(-Rx,Rx,50),linspace(-Ry,Ry,50),linspace(-Rz,Rz,50));
R = sqrt((X/Rx).^2 + (Y/Ry).^2 + (Z/Rz).^2);
seg = zeros(size(X)); seg(R <= 1 ) = 1; seg(R <= 0.5) = 2;
slice(Y,X,Z,seg,0,0,0); axis equal vis3d; colorbar;