c++-builder.-20-efektownych-programow full scan.pdf
(
10185 KB
)
Pobierz
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
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
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
6
C++ Builder. 20 efektownych programów
()*")*( /0+"1235!-6
()*+,-,.
()*,-,.
=
=
Rysunek 7.
Czarne tło uzyskałem, opracowujc w Inspektorze obiektów wła)ciwo)* o nazwie Color.
Modyfikacja algorytmu wbijania gwodzików polega na innej organizacji ptli for() — teraz ptla nie
liczy linii, a przebiega jako) zakre)lon dziedzin, akceptowaln przez wykorzystane tutaj funkcje
trygonometryczne. Stała o nazwie M_PI (liczba pi) jest z du$ dokładno)ci zdefiniowana w doklejanym
nagłówku matematycznym math.h.
Co si$ tutaj zmieniło? Algorytm jest dwa razy dłuszy — w kadym obiegu p$tli kre-
'limy nie jedn(, a dwie linie. Sama p$tla przebiega od warto'ci –3.14 do +3.14 (sym-
bol M_PI to zdefiniowana w pliku nagłówkowym math.h liczba pi) ze skokiem rów-
nym pi/200. Dlaczego taki zakres p$tli? Nie wiadomo — prosz$ spróbowa% rozegra% to
inaczej. Na tym mi$dzy innym polega wielka sztuka — trzeba co' zrobi% po swojemu.
Przed wykre'leniem kadej z dwóch linii pojawia si$ fraza dobierania koloru. Za ko-
lor linii w aparacie Canvas (płótno malarskie) odpowiada obiekt Pen (pióro), który
z kolei ma zmienn( Color. Kolor ustala bardzo sprytna i ch$tnie wykorzystywana in-
strukcja warunkowego przypisania:
$$$
2.2"&0>)&0' 0+"123.!4
$$$
Dlaczego lubimy t$ instrukcj$? Bo daje si$ wbudowywa% bezpo'rednio w wyraenia.
Za pomoc( klasycznego warunku logicznego powysze zapisaliby'my np. tak:
$$$
0+"12
2.2"&0>)&0' %'8'+)
6
C:\Andrzej\PDF\C++ Builder. 20 efektownych programów\skład!!.doc
Plik z chomika:
basia1995x
Inne pliki z tego folderu:
autocad 2005 i 2005 pl full.pdf
(22413 KB)
intensywny kurs przywództwa. szybki program rozwoju zdolności przywódczych full.pdf
(9732 KB)
płytki umysł. jak internet wpływa na nasz mózg helion.pdf
(34503 KB)
analiza statystyczna. microsoft excel 2010 pl cała książka.pdf
(27781 KB)
matematyczne-szkielko-i-oko.-mniej-i-bardziej-powazne-zastosowania-matmy full scan.pdf
(28897 KB)
Inne foldery tego chomika:
ebooki(1)moooooooo
ebooki(1)moooooooo(1)
ebooki(1)moooooooo(10)
ebooki(1)moooooooo(11)
ebooki(1)moooooooo(12)
Zgłoś jeśli
naruszono regulamin