内容:
function [Sph]=ConcreteBone(Range,Num,Rmin,Rmax)
cum=0;
for i=1:1000000
if cum==Num
break;
end
x=rand(1)*(Range(1,2)-Range(1,1))+Range(1,1);
y=rand(1)*(Range(2,2)-Range(2,1))+Range(2,1);
z=rand(1)*(Range(3,2)-Range(3,1))+Range(3,1);
r=rand(1)*(Rmax-Rmin)+Rmin;
if (x-r>Range(1,1) & x+r<Range(1,2)) & (y-r>Range(2,1) & y+r<Range(2,2)) & (z-r>Range(3,1) & z+r<Range(3,2))
if cum==0
cum=cum+1;
Sph(cum,:)=[x y z r];
else
sum=0;
for j=1:cum
D=sqrt((Sph(j,1)-x)^2+(Sph(j,2)-y)^2+(Sph(j,3)-z)^2);
if D<Sph(j,4)+r
break;
else
sum=sum+1;
end
end
if sum==cum
cum=cum+1;
Sph(cum,:)=[x y z r];
end
end
end
end
[xx,yy,zz]=sphere(20);
for i=1:Num
surf(xx*Sph(i,4)+Sph(i,1),yy*Sph(i,4)+Sph(i,2),zz*Sph(i,4)+Sph(i,3));
hold on;
end
axis image;