Algorytmy stochastyczne — laboratorium 07
Transkrypt
Algorytmy stochastyczne — laboratorium 07
Algorytmy stochastyczne — laboratorium 07 Jarosław Piersa 2014-04-04 1 Krajobraz fraktalny 1.1 Ćwiczenia do przemyślenia na zajęciach Z moodle pobierz archiwum ze źródłami • popraw bug, który powoduje, że wartości na wspólnych krawędziach są liczone podwójnie (w funkcji recFill()) • dodaj inicjowanie mapy wartościami w wybranych punktach (w matlabie indeksowania są od 1 zatem będą to pozycje 2k + 1, może też wymagać modyfikacji funkcji recFill()) • poszukaj dokumentacji do funkcji surfl() (a surf() + lighting), zmień wyśiwetlanie powierzchni na powierzchnię oświetloną (plasma()) • dopisz rozmycie liniowe / gaussowskie do mapy wysokości • poszukaj dokumentacji do mapy kolorów powierzchni (colormap()); w pętli T = 1:100 cyklicznie przesuwaj mapę kolorów o jeden element aby uzyskać efekt plazmy function z = sdf ( n ) w = 2^ n +1; z = zeros (w , w ); z (1 ,1) = randn (); z (1 , w ) = randn (); z (w ,1) = randn (); z (w , w ) = randn (); z = recFill1 (z , 1 , w , 1 , w ); figure (1); hold off ; surf (1: w , 1: w , z ); % mesh (1: w , 1: w , z ); colormap ( bone ); end function Z1 = recFill (Z , fromX , toX , fromY , toY ) if ( toX - fromX == 1) Z1 = Z ; return end scal = 0.025; % square step midX = ( fromX + toX ) / 2; midY = ( fromY + toY ) / 2; s = Z ( fromX , fromY ) + Z ( toX , fromY ) + Z ( fromX , toY ) + Z ( toX , toY ); Z ( midX , midY ) = .25 * s + randn () * ( toX - fromX ) * scal ; % diamod step Z ( fromX , midY ) = .5 * ( Z ( fromX , fromY ) + Z ( fromX , toY )) + randn () * .5 *( toX - fromX ) * scal ; Z ( toX , midY ) = .5 * ( Z ( toX , fromY ) + Z ( toX , toY )) + randn () * .5 * ( toX - fromX ) * scal ; Z ( midX , fromY ) = .5 * ( Z ( fromX , fromY ) + Z ( toX , fromY )) + randn () * .5 *( toX - fromX ) * scal ; 1 Z ( midX , toY ) = .5 * ( Z ( fromX , toY ) + Z ( toX , toY )) + randn () * .5 * ( toX - fromX ) * scal ; Z = recFill (Z , Z = recFill (Z , Z = recFill (Z , Z = recFill (Z , Z1 = Z ; fromX , midX , fromY , midY ); midX , toX , fromY , midY ); fromX , midX , midY , toY ); midX , toX , midY , toY ); end function plasma1 () % in case of problems decrease n n = 7; x = 1:(2^ n +1); z = sdf ( n ); % mesh (x ,x , z ); surf (x ,x ,z , ’ EdgeColor ’ , ’ none ’ , ’ LineStyle ’ , ’ none ’ , ’ FaceColor ’ , ’ interp ’ , ’ FaceLighting ’ , ’ phong ’ ); view (0 , 90); % azimuth , elevation % predefined colormaps : % % % % % % % % % % % map map map map map map map map map map map map = = = = = = = = = = = = winter (30); bone (30); autumn (30); summer (30); spring (30); ocean (30); % my favourite :) hot (30); copper (30); jet (30); hsv (30); % CAREFUL !! this one can cause epilepsy !! cool (30); pink (30); % map = ocean (100)(70:100 ,:); colormap ( map ); grid (" off "); axis (" off "); flagPrint = false ; if flagPrint t = sprintf ( ’ ./ fig_ %04 d . png ’ , 0); print (t , ’ - dpng ’ ); usleep (1000); end end 2