27 lines
662 B
Text
27 lines
662 B
Text
function r = browniantree(xsize, ysize = xsize, numparticle = 1000)
|
|
r = zeros(xsize, ysize, "uint8");
|
|
r(unidrnd(xsize), unidrnd(ysize)) = 1;
|
|
|
|
for i = 1:numparticle
|
|
px = unidrnd(xsize-1)+1;
|
|
py = unidrnd(ysize-1)+1;
|
|
while(1)
|
|
dx = unidrnd(2) - 1;
|
|
dy = unidrnd(2) - 1;
|
|
if ( (dx+px < 1) || (dx+px > xsize) || (dy+py < 1) || (dy+py > ysize) )
|
|
px = unidrnd(xsize-1)+1;
|
|
py = unidrnd(ysize-1)+1;
|
|
elseif ( r(px+dx, py+dy) != 0 )
|
|
r(px, py) = 1;
|
|
break;
|
|
else
|
|
px += dx;
|
|
py += dy;
|
|
endif
|
|
endwhile
|
|
endfor
|
|
endfunction
|
|
|
|
r = browniantree(200);
|
|
r( r > 0 ) = 255;
|
|
jpgwrite("browniantree.jpg", r, 100); % image package
|