1. Utilizziamo le trasformazioni
affini per realizzare immagini di frattali
(Barnsley,
1986-88).
Ricordate che:
I. la
trasformazione è prodotto delle due
omologie e , che cambiano le
scale sugli assi;
II. La matrice della rotazione di un
angolo a (in radianti), in senso antiorario, intorno a (0,0), è data da:
III. Con
indichiamo la traslazione di
componenti xt, yt.
2. Sulla
base di quanto precede, interpretate e elaborate il seguente programma
esempio:
SCREEN 12
WINDOW (-10, -10)-(10, 10)
RANDOMIZE TIMER
pi = 3.141592654#
x = 0: y = 0
ripeti:
dir = INT(RND * 3)
IF dir = 0 THEN trasf x, y, .5, .5, 0, 0, 5
IF dir = 1 THEN trasf x, y, .5, .5, 45, -5, -5
IF dir = 2 THEN trasf x, y, .5, .5, -45, 5, -5
IF INKEY$ = "" THEN GOTO ripeti
END
SUB trasf (x, y, h, k, a, xt, yt)
SHARED pi
a = a * pi / 180 'da gradi in radianti
xs = x * h * COS(a) - y * k * SIN(a) + xt
ys = x * h * SIN(a) + y * k * COS(a) + yt
x = xs: y = ys
PSET (x, y)
END SUB
3. Provate anche con i seguenti
parametri:
I..
ripeti:
dir = INT(RND * 3)
IF dir = 0 THEN trasf x, y, .5, .5, 0, 0, 2.5
IF dir = 1 THEN trasf x, y, .5, .5, 0, -2.5, -2.5
IF dir = 2 THEN trasf x, y, .5, .5, 0, 2.5, -2.5
IF INKEY$ = "" THEN GOTO ripeti
II.
ripeti:
dir = INT(RND * 4)
IF dir = 0 THEN trasf x, y, .6, .6, 0, 0, -5
IF dir = 1 THEN trasf x, y, .6, .6, 0, 0, 5
IF dir = 2 THEN trasf x, y, .5, .5, 45, -5, -2.5
IF dir = 3 THEN trasf x, y, .5, .5, -45, 5, -2.5
IF INKEY$ = "" THEN GOTO ripeti
III.
ripeti:
dir = INT(RND * 3)
IF dir = 0 THEN trasf x, y, .5, .5, 0, -5, 5
IF dir = 1 THEN trasf x, y, .5, .5, 0, 5, 5
IF dir = 2 THEN trasf x, y, .5, .5, 0, 5, -5
IF INKEY$ = "" THEN GOTO ripeti
4. Cambiate ancora i parametri! Trovate qualche bella immagine!!
5. La dimensione di un frattale non è un numero intero!