22.11.2014 Views

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Jeżeli nie określimy atrybutu dla<br />

powierzchni normalnej, trójkąt taki będzie<br />

oświetlony tylko przez światło otaczające.<br />

Aby główne światło oddziaływało na<br />

powierzchnię trójkąta musimy określić<br />

atrybut powierzchni normalnej<br />

(oświetlenie) dla każdego z wierzchołków.<br />

W najprostszym przypadku kierunek<br />

światła głównego jest prostopadły do<br />

powierzchni trójkąta a przylegające na<br />

około trójkąty mają widoczne krawędzie<br />

(ang. solid).<br />

Gładkie krawędzie mogą być wytworzone<br />

przez uśrednienie atrybutów powierzchni<br />

normalnej dla dwóch przylegających<br />

ścianek w punkcie zetknięcia każdego z<br />

Rysunek 18: Obiekty wykonane z trójkątów przy pomocy<br />

funkcji faces. a) powierzchnia obiektu wygładzona<br />

(ang. smooth) b) powierzchnia obiektu bez wygładzenia<br />

(ang. solid)<br />

wierzchołków. Jasność powierzchni jest proporcjonalna do cos (gdzie - to kąt<br />

pomiędzy wektorami normalnymi) i natężenia światła głównego.<br />

Jeżeli określimy różne kolory dla poszczególnych wierzchołków w danym trójkącie, nie to<br />

otrzymamy jednobarwnego trójkąta gdyż VPython interpoluje kolory w poprzek<br />

powierzchni trójkąta. Podobnie jest również dla atrybutów powierzchni normalnej, jeżeli<br />

będą różnice w tych atrybutach to powierzchnia nie będzie jednolicie jasna.<br />

Funkcja face() jest zatem przeznaczona do konstruowania nowych brył. Jej elastyczność jest<br />

wystarczająca dla implementacji algorytmów wygładzania powierzchni, kolorowania<br />

wierzchołków, wykonywania powierzchni jedno lub obustronnie oświetlonych etc, ale<br />

należy pamiętać, że wszystkie kalkulacje muszą być wykonane przez programistę.<br />

W przypadku brył standardowych takich jak stożki i sfery algorytmy wygładzania<br />

powierzchni są wewnętrznie zaimplementowane w strukturze wywołującej daną bryłę.<br />

Relacjonowanie z kilku kamer jednocześnie<br />

Wywołując dowolną bryłę z biblioteki Visual inicjujemy automatycznie okno 3D, które nazwane<br />

jest scene. W przypadku gdy samodzielnie zdefiniujemy parametry okna nie zostanie ono<br />

stworzone dopóki nie zainicjujemy jakichś obiektów, które będą się tam znajdować, poza tym jeżeli<br />

już wcześniej w programie zainicjujemy własne okno 3D nie musimy interesować się oknem o<br />

nazwie scene.<br />

Polecenie display() tworzy w pamięci okno 3D wraz ze specyficznymi dla niego atrybutami.<br />

Powoduje także automatyczną selekcję tego okna, i zwraca je w wyżej wymienionym przypadku.<br />

Dla przykładu, poniższy skrypt wywołuje okno 3D o rozdzielczości 600 na 200 pikseli z tytułem<br />

„Moje okno” umieszczonym na belce stanu. Środek okna (centrum) znajduje się w punkcie (3,0,0) a<br />

kolor wypełnienia okna jest biały.<br />

scene2 = display(title='Moje okno',<br />

width=600, height=200,<br />

27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!