C++ Builder 20 efektownych programow.pdf

(683 KB) Pobierz
C:\Andrzej\PDF\C++ Builder. 20 efektownych programów\1 strona.cdr
IDZ DO
C++ Builder.
20 efektownych programów
SPIS TRECI
KATALOG KSI¥¯EK
Autor: Andrzej Stasiewicz
ISBN: 83-7197-656-9
Nonik: CD
Liczba stron: 224
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Ksi¹¿ka zawiera bardzo przystêpne opisy niezwykle efektownych zjawisk z pogranicza
ró¿nych nauk przyrodniczych oraz ich komputerowe realizacje w dialekcie C++ Builder
firmy Borland. Stanowi ona zbiór æwiczeñ do wykorzystania na szkolnym kó³ku
komputerowym, ale zapewne zainteresuje te¿ wyk³adowców i studentów kierunków
przyrodniczych. Od Czytelnika wymagamy wiedzy na poziomie szko³y redniej,
a  niekiedy zaledwie gimnazjum. Opi-sywane zagadnienia czêsto s¹ ledwie zarysowane
i  pozostawiaj¹ Czytelnikowi ogromne mo¿liwoci dalszego, samodzielnego
eksperymentowania.
W realizacji pomys³ów Autor po mistrzowsku pos³uguje siê najprostszym, a przy tym
w pe³ni obiektowym i bardzo nowoczesnym sposobem programowania komputerów.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
319877774.004.png 319877774.005.png 319877774.006.png 319877774.007.png
Notka wydawnicza .............................................................................5
Wstp ...............................................................................................7
Rozdział 1. Dywany na ustalonej powierzchni........................................................9
Rozdział 2. Grafika rozpinanej nici......................................................................17
Rozdział 3. Serwetka z cykloid...........................................................................23
Rozdział 4. Skalowanie......................................................................................31
Rozdział 5. Składanie drga' poprzecznych..........................................................43
Rozdział 6. Sumowanie drga'.............................................................................51
Rozdział 7. Dywany iterowane............................................................................61
Rozdział 8. Dywany afiniczne .............................................................................69
Rozdział 9. Grafika układu współrzdnych...........................................................87
Rozdział 10. Konkurencja midzygatunkowa.........................................................97
Rozdział 11. Przyszło/0 nie do przewidzenia .......................................................111
Rozdział 12. Algorytm barwy fizycznej................................................................119
Rozdział 13. Grafika wykładników Lapunowa......................................................127
Rozdział 14. Fraktal Mandelbrota.......................................................................137
Rozdział 15. Eksplorator Mandelbrota................................................................147
Rozdział 16. Otwarty kosmos.............................................................................161
Rozdział 17. Gra w 8ycie....................................................................................171
Rozdział 18. Epidemia .......................................................................................185
Rozdział 19. Mrowisko pełne automatów............................................................201
Rozdział 20. Jednowymiarowy automat komórkowy ............................................215
319877774.001.png
Rozdział 2.
Jest pod Białymstokiem artystka, która niegraficznymi technikami tworzy dziwne
grafiki. Wbija ta niemłoda ju babcia setki gwo dzików, a potem rozpina na nich ko-
lorowe nitki. Nie jest to jednak takie łatwe, jak mogłoby si$ wydawa% — artystce
z pewno'ci( naley si$ uznanie. Sił( tych obrazów jest ich matematyczna precyzja
— drobne niejednorodno'ci w prowadzeniu nici, nierównomierne odst$py nasze oczy
wychwytuj( natychmiast.
B$dziemy wbija% gwo dziki w wirtualn( desk$ wirtualnego obrazu. Wbi% gwo dzik
b$dzie znaczyło tyle, co wyliczy% jakim' algorytmem jego współrz$dne (x, y). Roz-
pi(% nitk$ mi$dzy dwoma gwo dzikami b$dzie znaczyło tyle, co poci(gn(% kolorow(
lini$ od jednego punktu do drugiego.
Algorytm rozpinania nici musi mie% jaki' taki kształt:
STAŁE:
ZMIENNE:
!"#$!%"#$
!%"#$
&!!"#$!%"#$
&!%"#$
' (
)
Po wst$pnych deklaracjach, ustaleniu liczby rozpinanych nici MAX_IL, wyliczamy
cztery współrz$dne dwóch gwo dzików, a potem rozpinamy lini$ — nitk$ mi$dzy
nimi. Zmienna R oraz cała ta pl(tanina funkcji trygonometrycznych to kaprys progra-
misty. Cała sztuka polega na dobraniu takich formuł na cztery współrz$dne ko0ców
linii, by zamkni$ta w p$tli cało'% złoyła si$ na mił( oku grafik$. Znów nie ma ad-
nych reguł, gwarantuj(cych sukces artystyczny. Nazwijmy to programowaniem eks-
perymentalnym...
C:\Andrzej\PDF\C++ Builder. 20 efektownych programów\skład!!.doc
3
319877774.002.png
4
C++ Builder. 20 efektownych programów
Spróbujmy zaimplementowa% nasz algorytm w dialekcie C++ Buildera. Jak zwykle,
zaczynamy od wydania polecenia New Application, po którym Builder oczyszcza
swoje wn$trze z dotychczasowych programów i jest gotów do pracy nad nowym za-
gadnieniem.
Rysunek 6. Babcia wbiła w wirtualn desk 1000 gwodzików i rozpiła midzy nimi 500 czarnych nici.
Pozycje gwodzików nie s przypadkowe — dostarcza je niezbyt zło$ona kombinacja funkcji
trygonometrycznych.
W okienku edytora, które na pocz(tek jest ukryte pod okienkiem z form(, od razu do-
klejmy nagłówek modułu z algorytmami matematycznymi. Oto fragment kodu, który
powinni'my najpierw zlokalizowa% w górnej cz$'ci pliku CPP, potem uzupełni%
o fraz$ doklejania nagłówka:
##&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*%'+,)-.%'$/0
*1 2342/, "1
*%'+,)5%$/5
$$$
Grafik$ oczywi'cie umie'cimy w uzgodnionej z systemem operacyjnym funkcji — reak-
cji na zdarzenie OnPaint — chc$ rysowa%. Tylko wtedy nasz program automatycznie
odnowi swoj( grafik$, gdy jego okienko nagle wyłoni si$ spod Worda czy Excela.
Odszukajmy wi$c Inspektora obiektów, przejd my na jego zakładk$ Events — zda-
rzenia — i dwukrotnym klikni$ciem wygenerujmy funkcj$ — reakcj$ na zdarzenie
OnPaint. Gdy Builder wykreuje puste ciało tej funkcji, niezwłocznie spiszmy jej algo-
rytm, przekładaj(c wcze'niejsze, ogólne frazy na dialekt C++ Buider:
4
C:\Andrzej\PDF\C++ Builder. 20 efektownych programów\skład!!.doc
319877774.003.png
Rozdział 1. Tytuł rozdziału
5
!! "#$%&'
6
,+7')8
')9,/#
')9,/#
8'):)3/#
-;<<
6
!"#$!%"#$
!%"#$
&!!"#$!%"#$
&!%"#$
()*+,-,.
()*,-,.
=
=
Jest to w zasadzie ten sam algorytm, ale wypowiedziany w innym j$zyku i osadzony
w konkretnym okienku. Zmienne R, A i B maj( znaczenie czysto techniczne — R rozci(-
ga grafik$, A i B j( pozycjonuje w okienku Windows. Parametry ClientWidth i Client-
Height zadaj( rozpi$to'% graficznej powierzchni okienka. Zauwamy te, e u Borlanda
nie ma czteroargumentowej funkcji Line(), za to jest para funkcji MoveTo() — id do
punktu i LineTo() — ci(gnij stamt(d lini$. Ta para funkcji z powodzeniem zast$puje
klasyczn( funkcj$ Line().
Pora na wskazanie kilku moliwo'ci modyfikacji algorytmu. Przede wszystkim
włómy troch$ koloru w grafik$ rozpinanej nici. Mam taki pomysł:
!! "#$%&'
6
,+7')8
')9,/#
')9,/#
8'):)3/#
&>-><>#
6
!"!%"
!%"
&!"!%"
&!%"
()*")*( /0+"123.!4
()*+,-,.
()*,-,.
!"
!%"!"
&!"
&!%"!"
C:\Andrzej\PDF\C++ Builder. 20 efektownych programów\skład!!.doc
5
Zgłoś jeśli naruszono regulamin