Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
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