User:Zeracles/Background/Code/Stars
< User:Zeracles | Background
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
See also this quick download
%background.m %by Anthony Smith (Zeracles); astroant@hotmail.com, asmith@physics.usyd.edu.au, http://www.physics.usyd.edu.au/~asmith/, http://wiki.uqm.stack.nl/User:Zeracles %see http://www.star-control.com/forum/index.php/topic,1660.0.html %nice stellar geometry can be obtained with anglemagnificationbase=0.5;anglemagnificationindex=5;anglecutoffradiusfactor=1; n=800; resolution=1; xmin=0; xmax=1600; ymin=0; ymax=1200; xextent=xmax-xmin; yextent=ymax-ymin; numxpix=round((xextent)/resolution); numypix=round((yextent)/resolution); spokethreshold=0; spokes=4; anglemagnificationbase=0.5; anglemagnificationindex=5; cutoffradiusfactor=4; anglecutoffradiusfactor=1; plotposns=1; plotimage=1; xposns=xmin+(xmax-xmin)*rand(n,1); yposns=ymin+(ymax-ymin)*rand(n,1); if plotposns==1 figure box on plot(xposns,yposns,'k.') end redmap=zeros(numypix,numxpix); greenmap=zeros(numypix,numxpix); bluemap=zeros(numypix,numxpix); for i=linspace(1,n,n) i xposn=xposns(i); yposn=yposns(i); radius=((exp(rand(1)))*14-0.01)/2; intensity=2*rand(1); redness=rand(1); greenness=rand(1); blueness=rand(1); spokeprobability=rand(1); spokeswitch=spokeprobability>spokethreshold; spokeangleoffset=pi/4; ygaussiancontribution=[]; for gridxpixel=linspace(1,numxpix,numxpix) gridxposn=xmin+(gridxpixel-1)*(xextent)/(numxpix-1); xgaussiancontribution=[]; for gridypixel=linspace(1,numypix,numypix) gridyposn=ymin+(gridypixel-1)*(yextent)/(numypix-1); xdiff=xposn-gridxposn; ydiff=yposn-gridyposn; distance=((xdiff)^2+(ydiff)^2)^(1/2); distancefactor=distance/radius; if distancefactor>cutoffradiusfactor littlexgaussiancontribution=0; end if distancefactor<=cutoffradiusfactor littlexgaussiancontribution=exp(-1*(distance^2)/(2*radius^2)); if spokeswitch==1 anglesweep=2*pi/spokes; angle=atan(ydiff/xdiff); correctedangle=angle-spokeangleoffset; angledisplacementnumber=round((correctedangle)/(anglesweep)); angledisplacement=abs((correctedangle)-angledisplacementnumber*(anglesweep)); anglemagnification=anglemagnificationbase+(1-anglemagnificationbase)*((1-anglecutoffradiusfactor*distancefactor*(angledisplacement*(anglesweep/2))))^anglemagnificationindex; if anglemagnification<0 anglemagnification=0; end littlexgaussiancontribution=littlexgaussiancontribution*anglemagnification; end end xgaussiancontribution=[xgaussiancontribution;littlexgaussiancontribution]; end ygaussiancontribution=[ygaussiancontribution,xgaussiancontribution]; end gaussiancontribution=intensity*ygaussiancontribution; redmap=redmap+gaussiancontribution*redness; greenmap=greenmap+gaussiancontribution*greenness; bluemap=bluemap+gaussiancontribution*blueness; end excessmask=redmap>1; redmap=redmap-excessmask.*(redmap-1); excessmask=greenmap>1; greenmap=greenmap-excessmask.*(greenmap-1); excessmask=bluemap>1; bluemap=bluemap-excessmask.*(bluemap-1); backgroundmap=cat(3,redmap,greenmap,bluemap); if plotimage==1 figure box on image(backgroundmap) end