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

Podobne dokumenty