Flash_Akademia_matematycznych_sztuczek_Wydanie_II_almaf2.pdf

(1526 KB) Pobierz
Flash. Akademia
matematycznych
sztuczek. Wydanie II
Autorzy: Keith Peters, Manny Tan, Jamie MacDonald
T³umaczenie: Piotr Cieœlak
ISBN: 978-83-246-0170-7
Tytu³ orygina³u:
Flash Math Creativity (Second edition)
Format: B5, stron: 272
Tworzenie zaskakuj¹cych efektów graficznych
• Jak stworzyæ trójwymiarowe wykresy?
• Jak wykorzystaæ wzory matematyczne w programowaniu?
• W jaki sposób zastosowaæ geometriê fraktaln¹ do generowania grafiki?
Jesteœ programist¹ Flasha i szukasz nowych wyzwañ? A mo¿e zastanawiasz siê,
czy matematyka, jak¹ pozna³eœ w szkole lub na studiach, mo¿e okazaæ siê przydatna
w projektach prezentacji flashowych? Jeœli chcesz stworzyæ we Flashu coœ nowego,
œwietnie siê przy tym bawi¹c, mo¿esz wykorzystaæ w tym celu swoj¹ wiedzê
matematyczn¹. Fraktale, ci¹g Fibonacciego, geometria trójwymiarowa, rachunek
wektorowy — to wszystko mo¿e staæ siê narzêdziem, dziêki któremu uzyskasz
zapieraj¹ce dech w piersiach efekty graficzne.
Ksi¹¿ka „Flash. Akademia matematycznych sztuczek. Wydanie II” to zbiór projektów,
których twórcy w ciekawy sposób wykorzystuj¹ znane zale¿noœci matematyczne.
Czytaj¹c j¹, dowiesz siê, jak powstaj¹ hipnotyczne efekty wiruj¹cych kszta³tów
geometrycznych oraz jak generowaæ fraktalne krajobrazy i figury. Poznasz mo¿liwoœci
wykorzystania translacji wektorowych i macierzowych do konstruowania trójwymiarowych
wykresów oraz bry³. Nauczysz siê tak¿e uwzglêdniaæ dynamikê w animacjach
i symulowaæ jej wp³yw na animowane obiekty.
• Animowanie kszta³tów dwuwymiarowych
• Faluj¹ca siatka
• Tworzenie fraktalnych roœlin i krajobrazów
• Wykorzystanie rekurencji
• Efekty trójwymiarowe
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Przekonaj siê, ¿e matematyka wcale nie musi byæ ¿mudna i mêcz¹ca
SpiS treści
1
JAMie MAcDONALD
towardsUs (atak piłek)
inLine (w jednej Linii)
righttoLeft (prawy do Lewego)
singrid (faLUjąca siatka)
7
8
14
18
22
5
GABrieL MULZer
fiBonacci fLower
(kwiat fiBonacciego)
particLes (cząsteczki)
recUrsive pattern
(wzór rekUrencyjny)
sine & co. (sinUs i spółka)
85
86
90
94
98
2
GLeN rHODeS
fLowers (kwiaty)
traiLs (ścieżki)
trees (drzewa)
circLes (kółka)
25
26
30
34
38
6
pAUL prUDeNce
recUrsive (rekUrencja)
swooping (Lot trzmieLa)
circLing (zawijasy)
stiLL (stop-kLatka)
103
104
108
112
116
3
DAViD HirMeS
Lines (Linie)
in and oUt of the grid
(zwykła niezwykła siatka)
springs (sprężystość)
BLoBs (pLamy)
43
44
50
56
62
7
Kip pArKer
composeUr (kompozytor)
paUse (przerwa)
poLygon (wieLokąt)
sine (sinUsoida)
121
122
126
130
134
4
LiFArOS
aLien message
(wiadomość od oBcych)
fLag (fLaga)
69
70
74
8
JAreD tArBeLL
iterative inspiration
(inspiracja w iteracji)
Lorenz attractors
(atraktory Lorenza)
recUrsive inspiration
(inspiracja w rekUrencji)
recUrsive circLes
(rekUrencyjne kółka)
139
140
146
150
154
rainBow fLower (tęczowy kwiat) 78
stem generator
(generator rośLin)
82
9
KeitH peterS
dot grid (siatka pUnktów)
157
158
13 JD HOOGe
terraforming
(kształtowanie terenU)
traiLing Lines (śLady)
eLastic waves
(eLastyczne faLe)
phantom shapes
(eteryczne kształty)
227
228
232
236
240
fractaL foLia (fraktaLne zarośLa) 162
wire-frame organic
(organiczna siatka)
hUngry ai
(wygłodniała inteLigencja)
166
170
10 KeN JOKOL
growing Lines (rosnące Linie)
generative grid (mozaika)
coLorsUck (wampir koLorów)
sqUares (kwadraty)
175
176
182
186
191
14 MANUeL tAN
coLor BLend (mieszanie Barw)
spinner (śmigło)
fLUid dynamics (faLowanie)
vortex vase (wirUjący pUchar)
243
244
248
252
256
11 tY LettAU
Lines (kreski)
orBits (orBity)
terra (ziemia)
poLarity (opiłki)
195
196
200
202
208
15 BrANDON WiLLiAMS
pLotter (pLoter)
261
262
DrOGOWSKAZY
270
12 pAVeL KALUZHNY
BaLLs (piłki)
rings (pierścienie)
3d text (napis 3d)
213
214
220
224
jamie macdonald
tytul rozdzialu
Skąd czerpać inspirację? Trudno jest udzielić jednoznacznej odpo-
wiedzi na tak zadane pytanie. Często wpadam na ciekawe pomysły,
obserwując rzeczy, które napotykam w moim najbliższym otocze-
niu, i wykonując zwykłe, codzienne czynności: oglądając telewizję,
filmy czy słuchając muzyki. Pracując we Flashu, często podejmuję
próby naśladowania jakiegoś zjawiska lub sceny, którą zaobser-
wowałem. Choć rozpoczynając swoje eksperymenty, zazwyczaj
wyobrażam sobie pewien konkretny rezultat, do którego staram
się dążyć, to w trakcie realizowania owego „głównego wątku” nie-
mal zawsze zdarza mi się przypadkiem odkryć nowe, zaskakujące
możliwości, które sprawiają, że otrzymuję w efekcie coś, czego
zupełnie bym się nie spodziewał.
Jamie Macdonald mieszka i pracuje w Londynie.
jamie macdonald
www.nooflat.nu
Kilka informacji na początek
Każdy z projektów, które za chwilę omówię, będę rozpoczynał od tego sa-
mego pliku wyjściowego. Dla wygody, aby uniknąć czterokrotnego powta-
rzania tych samych opisów we wstępach do kolejnych eksperymentów,
zrobię to tylko raz.
Projekty, które przygotowałem, są stosunkowo nieskomplikowane.
Opracowanie każdego z nich nie pochłonęło mi więcej jak kilka godzin, lecz
uważam, że wyróżnia je elastyczność i spore możliwości: zwykła zmiana kilku
parametrów może prowadzić do niemal całkowitego przeobrażenia uzyska-
nego efektu. Wspólną cechą wszystkich projektów jest zastosowanie funkcji
trygonometrycznych sinus i cosinus do animacji różnych obiektów, zanim
więc przejdę do szczegółowego omawiania konkretnych efektów, chciałbym
powiedzieć kilka słów o właściwościach tych funkcji. Zarówno sinusoida, jak
i cosinusoida są krzywymi okresowymi i w przedziale od 0 do 360 stopni
zmieniają swoją wartość w zakresie od 1 do –1 (na przykład sin 90 = 1, zaś
sin 270 = –1). Jak łatwo zauważyć, cosinusoidę można potraktować jako
szczególny przypadek sinusoidy przesunięty względem niej o pewną wartość.
360 stopni = 2*pi radianów
180 stopni = pi radianów
1 stopień = pi/180 radianów
W celu przeliczenia stopni na radiany można użyć następującego wzoru:
radians = degrees×Math.PI/180
-1
Sinusoida
90
180
270
360
To byłoby na tyle, jeśli chodzi o niezbędną wiedzę matematyczną.
Przystąpię teraz do omawiania szablonu projektu, który posłuży jako punkt
wyjścia do wszystkich dalszych eksperymentów. Przede wszystkim w pro-
jekcie tym powinien znaleźć się klip o nazwie
ball
, który zawierać będzie
czerwone kółko o wymiarach 42×42 piksele, umieszczone dokładnie
pośrodku sceny. Klip ten powinien zostać wyeksportowany z biblioteki
projektu z identyfikatorem
ball
.
Wszystkie eksperymenty można będzie z powodzeniem zrealizować,
używając tylko tego obiektu, jest jednak jeszcze jedna rzecz, którą zdecy-
dowałem się umieścić w szablonie, a mianowicie funkcja umożliwiająca
dynamiczną zmianę jasności klipu. Funkcję tę zdefiniowałem na głównej
listwie czasowej projektu, nadając jej nazwę
setBrightness
. Opiera się ona na
metodzie
setTransform
i można użyć jej w odniesieniu do dowolnego kolo-
rowego obiektu, który narysujesz. Warto zauważyć, ze funkcję tę napisałem
w taki sposób, by przyjmowała ona wyłącznie wartości dodatnie. Umieść
następujący kod w pierwszej klatce głównej listwy czasowej projektu:
function setBrightness(col:Color, brightness
Number):Void {
var anum:Number = 100 - brightness;
var bnum:Number = 255/100 * brightness;
col.setTransform( {ra:anum, ga:anum, ba:anum,
rb:bnum, gb:bnum, bb:bnum, aa:100, ab:0} );
};
1
-1
Cosinusoida
90
180
270
360
Szablon pliku jest gotowy. Podczas realizacji kolejnych projektów wy-
starczy uzupełniać go o odpowiedni kod źródłowy, który należy umieścić
w pierwszej klatce głównej listwy czasowej.
1
towardsUs (atak piłek)
Pierwszy efekt polega na generowaniu serii klipów, które stopniowo zwięk-
szają swoje rozmiary, oscylując przy tym względem środka ekranu, by
w pewnym momencie sprawić wrażenie przeniknięcia przez ekran monito-
ra — wówczas znikają na dobre. Sercem całego projektu są dwie funkcje.
Pierwsza z nich obsługuje zdarzenie
onEnterFrame
i służy do generowania
klipów filmowych, zaś druga, o nazwie
expand
, powoduje ich powiększa-
nie. Przypominam, że kod źródłowy projektu należy umieścić w pierwszej
klatce głównej listwy czasowej. Oto on:
var scaleMax:Number = 800;
var fadeOut:Number = 0.93;
var frequency:Number = 10;
var colMin:Number = 0;
var colMax:Number = 40;
var colVariance:Number = colMax - colMin;
function hRad(Void):Number {
return 4 + Math.random();
}
Biorąc pod uwagę zakres wartości, jaki przyjmują funkcje sinus i co-
sinus, w celu uzyskania oscylacji z przedziału od –10 do 10 wynik otrzy-
many dla kolejnych argumentów należy mnożyć przez 10. Jeśli naszym
celem byłoby uzyskanie oscylacji z przedziału od 0 do 40, to wartość
funkcji trzeba byłoby mnożyć przez 20 i do uzyskanego w ten sposób
rezultatu dodawać 20. Warto zauważyć, że ze względu na to, iż funkcje co-
sinus i sinus są funkcjami okresowymi, to poza granicami podstawowego
przedziału argumentów od (0 do 360 stopni) mają one taki sam przebieg,
jak w obrębie tego zakresu. Oznacza to, że wartość funkcji sinus dla kąta
wynoszącego 10, 370 czy 730 stopni będzie taka sama.
Posługując się funkcjami trygonometrycznymi w programie Flash, na-
leży pamiętać, że ich argumentami nie będą stopnie, lecz radiany — nie-
co inna jednostka miary.
Przed użyciem funkcji trygonometrycznych we Flashu trzeba zatem
zadbać o przekształcenie wartości w stopniach na radiany, co zresztą jest
stosunkowo proste:
Zgłoś jeśli naruszono regulamin