C_Builder_Symulacje_komputerowe_poprws.pdf

(259 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
C++Builder. Symulacje
komputerowe
Autor: Andrzej Stasiewicz
ISBN: 83-7361-052-9
Format: B5, stron: 238
Zawiera CD-ROM
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Nowoczesne techniki programowania i projektowania pozwalaj¹ pisaæ z³o¿one aplikacje
tak¿e osobom nie bêd¹cym informatykami. Pasjonatom nauk przyrodniczych przychodzi
z pomoc¹ projektowanie obiektowe: dziêki zastosowaniu gotowych obiektów mog¹ oni
symulowaæ komputerowo zjawiska wystêpuj¹ce w przyrodzie. Programowanie
zorientowane obiektowo wymaga przede wszystkim bardzo dok³adnych opisów
funkcjonalnych obiektów; szczegó³y techniczne, realizatorskie i znajomo æ ich konstrukcji
wewnêtrznej nie s¹ tu wa¿ne.
Ksi¹¿ka C++Builder. Symulacje komputerowe przedstawia kilkana cie programów
symuluj¹cych rozmaite zjawiska wystêpuj¹ce w przyrodzie. Programy te zosta³y napisane
w jêzyku C++ (u¿yto dialektu C++Builder Borlanda). Zastosowano w nich gotowe klasy,
które mo¿esz odnale æ na do³¹czonym do ksi¹¿ki kr¹¿ku CD, mo¿na je rozbudowywaæ
i wykorzystywaæ we w³asnych programach. Osoby zainteresowane tajnikami
programowania obiektowego poznaj¹ szczegó³y konstrukcji obiektów, przyrodnicy mog¹
pomin¹æ bardziej techniczne fragmenty i skoncentrowaæ siê na modelowaniu zjawisk
przyrodniczych.
Programy opisane w ksi¹¿ce dotycz¹:
• Widma wiat³a bia³ego
• Drgañ i fal prostych
• Fal na wodzie i ich interferencji
• Interferencji wiat³a
• Postrzegania g³êbi i geometrii 3D
• Fotografii relatywistycznej
• Algorytmów wzrostu
• Tworzenia wirtualnych przestrzeni za pomoc¹ techniki ledzenia promieni (ray-tracing)
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Programowanie obiektowe jest to jedyna technika szybkiego tworzenia aplikacji
z wykorzystaniem istniej¹cych, uniwersalnych algorytmów. Je li jeste interesujesz siê
fizyk¹ czy biologi¹, ksi¹¿ka udowodni Ci, ¿e nie musisz koñczyæ studiów informatycznych,
by modelowaæ komputerowo interesuj¹ce Ciê zjawiska.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Spis treści
Wstęp ............................................................................................... 5
Rozdział 1. Widmo światła białego ....................................................................... 7
Wszystkie barwy tęczy..............................................................................................7
Rozdział 2. Drgania i fale proste ........................................................................ 15
Trochę fizyki ..........................................................................................................16
Parametry fali prostej ..............................................................................................16
Sumowanie dwóch fal prostych................................................................................20
Sumowanie drgań prostopadłych ..............................................................................23
Suma fal i kształtowanie impulsów...........................................................................25
Biorytmy................................................................................................................28
Rozdział 3. Fale na wodzie................................................................................. 31
Powierzchniowa fala płaska .....................................................................................31
Fala kolista.............................................................................................................36
Interferencja fal na wodzie.......................................................................................41
Rozdział 4. Interferencja światła........................................................................ 47
Doświadczenie Younga ...........................................................................................47
Przestrzenny obraz interferencji światła .........................................................................54
Edytor układu otworków .........................................................................................62
Synteza obrazu rzeczywistego z obrazu interferencyjnego ..........................................69
Filtracja przestrzenna ..............................................................................................72
Rozdział 5. Postrzeganie głębi ........................................................................... 77
Trzy techniki syntezy głębi ......................................................................................78
Geometria postrzegania 3D......................................................................................82
Algorytmy syntezy głębi..........................................................................................84
Sześcian 3D......................................................................................................87
Kula 3D ...........................................................................................................89
Eksperymenty z bazą ..............................................................................................92
Porządkowanie sceny..............................................................................................95
Rozdział 6. Fotografia relatywistyczna ................................................................ 103
Teoria fotografii relatywistycznej ........................................................................... 104
Obiekt TRelatyw3d............................................................................................... 107
Relatywistyczny krzy ..................................................................................... 112
Relatywistyczna kostka ................................................................................... 114
4
C++Builder. Symulacje komputerowe
Zderzenie ze ścianą ............................................................................................... 116
Relatywistyczna autostrada .............................................................................. 119
Relatywistyczna kula....................................................................................... 120
Relatywistyka a kąt widzenia obiektywu.................................................................... 122
Twoja fotografia ................................................................................................... 125
Relatywistyczna stereoskopia................................................................................. 130
Rozdział 7. Algorytm wzrostu........................................................................... 137
Rozwijanie tekstu ................................................................................................. 137
Interpretacja formuły tekstowej.............................................................................. 140
Bardziej zło one rozwinięcia ................................................................................. 145
Wzrost 3D ........................................................................................................... 149
L system, czyli hodowla form roślinnych ................................................................... 153
Roślinny świat Lindenmayera ................................................................................ 159
Jeszcze więcej parametrów .................................................................................... 162
Rozdział 8. Obrazy świetlnego promienia .......................................................... 175
Idea techniki śledzenia promieni............................................................................. 176
Wyznaczenie promienia rysującego ........................................................................ 177
Promień szuka obiektów........................................................................................ 182
Promień wyrusza w dalszą drogę............................................................................ 188
Kolory ................................................................................................................. 192
Zabudowa sceny................................................................................................... 194
Implementacja ...................................................................................................... 195
Co dalej?........................................................................................................ 213
Dodatek A Funkcjonalne opisy klas ................................................................. 215
Klasa TSkalowanie ............................................................................................... 215
Klasa TDiagram.................................................................................................... 217
Klasa TWidmo ..................................................................................................... 217
Klasa TWykresPseudo3d....................................................................................... 217
Klasy TPunkt, TLinia, TWektor............................................................................. 220
Klasa T3d ............................................................................................................ 221
Klasa TWykres3d ................................................................................................. 222
Klasa TStereo....................................................................................................... 224
Klasy TRelatyw3d i TRelatywStereo ...................................................................... 224
Klasa TObraz ....................................................................................................... 224
Literatura ...................................................................................... 229
Skorowidz...................................................................................... 231
Rozdział 3.
Fale na wodzie
Poprzedni rozdział był poświęcony doskonaleniu umiejętności włączania obiektów
65MCNQYCPKG
i
6&KCITCO
do swoich aplikacji. Pretekstem były nieskomplikowane zja-
wiska falowe, konkretnie tzw. fale proste. Teraz zmierzymy się z nieco powa niejszym
zagadnieniem — falami powierzchniowymi. Fizyka opisywanych zjawisk nie będzie
przy tym zbyt trudna, poniewa ograniczymy się do rzeczy zapewne znanych. Jednak
komputerowa wizualizacja fal powierzchniowych będzie wymagała włączenia do nasze-
go warsztatu nowych obiektów, zdolnych do wykreślenia obrazów płacht funkcyjnych.
Powierzchniowa fala płaska
Powierzchnia wody jest dwuwymiarowym, sprę ystym ośrodkiem, w którym mogą
rozchodzić się zaburzenia. Cząsteczka (w rzeczywistości raczej grupa takich cząsteczek)
wody wytrącona, np. kijem, z poło enia równowagi drga rytmicznie w górę i w dół. Za
pośrednictwem sił oddziaływania międzycząsteczkowego porusza inne, sąsiednie czą-
steczki. Wówczas mamy do czynienia z rozchodzeniem się fali na powierzchni wody.
Przedstawimy taki obraz na ekranach monitorów. Nie będziemy przy tym modelować
tych wszystkich cząsteczek i ich oddziaływań, tylko wymyślimy matematyczny kształt
dwuwymiarowej funkcji, której wykres mo liwie wiernie odda obraz prawdziwej fali.
Aplikacja poka e obraz powierzchniowej fali płaskiej. Taka fala powstaje wtedy, gdy
czynnik zaburzający spokojną taflę wody ma kształt długiej linijki. Gdyby nagle po-
ruszyła się jedna ze ścian basenu, po powierzchni wody zaczęłaby wędrować fala pła-
ska. Termin
fala płaska
— cokolwiek oznacza — powstał głównie po to, by odró nić
taką falę od powierzchniowej fali kolistej. Do fal kolistych przejdziemy potem, a teraz
włączmy komputery.
Zaczniemy od eksploatacji nieco zubo onego algorytmu, zamkniętego w klasie
69[MTGU
2UGWFQF
. Algorytm ten, opisany ze strony funkcjonalnej w dodatku na końcu ksią ki,
słu y do prostego obrazowania powyginanych, dwuwymiarowych powierzchni (rysu-
nek 3.1). Teraz skoncentrujmy się na sposobie włączania go do aplikacji.
32
C++Builder. Symulacje komputerowe
Rysunek 3.1.
Obiekt TWykresPseudo3d nie nadaje się do bezpośredniego wykorzystania,
bo potrafi tylko wykreślać błahe, proste, płaskie powierzchnie. Na szczęście, funkcja
odpowiedzialna za wykres jest zapowiedziana jako wirtualna, a to znaczy, e powinniśmy
utworzyć obiekt potomny, który przejmie cały ustrój TWykresPseudo3d, ale z własną,
ju niewirtualną funkcją, odpowiadającą za kształt wykresu
Przypomnijmy raz jeszcze schemat działania, prowadzący do uzyskania
stanu zerowego
aplikacji z dodatkowym modułem. Nale y:
zało yć nowy katalog roboczy,
skopiować do niego pliki nowego modułu, tym razem
pseudo3d.h
i
pseudo3d.cpp
będące nośnikiem klasy
69[MTGU2UGWFQF
,
uruchomić Buildera i włączyć do projektu
pseudo3d.cpp,
dopisać frazę
KPENWFG RUGWFQFJ
,
zapisać wszystko w katalogu roboczym.
Spróbujmy wszystko zrobić tak jak dotychczas. Wygenerujmy funkcję — reakcję na
zdarzenie
1P2CKPV
(jest to funkcja odpowiedzialna za grafikę okienka). Zadeklarujmy
tam egzemplarz klasy
69[MTGU2UGWFQF
, tak jak podpowiada to intuicja i dotychczasowe
doświadczenie z obiektami
65MCNQYCPKG
albo
6&KCITCO
. Wreszcie, uruchomimy
KVGTCVQT
kreślący wykres:
XQKF AAHCUVECNN 6(QTO(QTO2CKPV 61DLGEV

5GPFGT

]
KPV OCTI ZG [G ZG [G YURÎ T\úFPG GMTCPQYG QFEKPMC
69[MTGU2UGWFQF Y OCTI OCTI %NKGPV9KFVJ %NKGPV*GKIJV

OCTI

%NKGPV*GKIJV

OCTI

YKPKELWLAKVGTCVQT
WTWEJQOKGPKG KVGTCVQTC
YJKNG YKVGTCVQT ZG [G ZG [G RúVNC MTG NæEC Y[MTGU
]
%CPXCU /QXG6Q ZG [G
Y[MTG NGPKG QFEKPMC Y[MTGUW
%CPXCU .KPG6Q ZG [G
_
_
Konstruktor tworzy obiekt typu
69[MTGU2UGWFQF
. Publiczna funkcja
KPKELWLAKVGTCVQT
rozpoczyna bieg algorytmu. Publiczny
KVGTCVQT
dostarcza współrzędne wszystkich od-
cinków, które mają zło yć się na wykres. Tylko gdzie jest nasza fala płaska?
Zgłoś jeśli naruszono regulamin