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.

4. Modelowanie obiektów (część 2)<br />

Budowa obiektów od podstaw<br />

• metoda frame<br />

Jedną z najprostszych metod tworzenia obiektów złożonych jest łączenie brył prymitywnych<br />

w większe grupy [G]. Przy pomocy funkcji frame możemy łączyć ze sobą zarówno różne<br />

bryły jak i krzywe, budując w ten sposób większe i bardziej złożone elementy. Połączone<br />

w ten sposób obiekty można przesuwać i obracać tak jak pojedyncze obiekty.<br />

magnes=frame()<br />

box(frame=magnes,pos=(0.0,0.0,0.0),<br />

length=1.0,height=0.25,width=0.25,<br />

color=(1.0,0.0,0.0))<br />

box(frame=magnes,pos=(1.0,0.0,0.0),<br />

length=1.0,height=0.25,width=0.25,<br />

color=(0.2,0.2,1.0))<br />

while 1:<br />

rate(25)<br />

#magnes.axis = (1,1,0)<br />

magnes.rotate(axis=(0,0,1), angle=a,<br />

origin=punkt)<br />

Domyślnie funkcja frame() przyjmuje pozycję<br />

(0,0,0) i orientację wzdłuż kierunku osi x. Gdy<br />

zmienione zostaną atrybuty funkcji frame() na<br />

przykład pozycji lub obrotu, cały obiekt zostanie<br />

przesunięty i obrócony.<br />

• funkcja convex<br />

Kolejna metoda umożliwia tworzenie obiektów na podstawie listy wierzchołków [G].<br />

Funkcja convex() pobiera listę pozycji punktów,<br />

(podobnie jak funkcja curve() ) z których generuje obiekt<br />

wypukły. Jeżeli się zdarzy, że któryś z punktów będzie<br />

leżał wewnątrz obiektu wypukłego to zostanie on<br />

pominięty. W przypadku gdy punkty będą leżeć w jednej<br />

płaszczyźnie utworzony obiekt będzie płaską<br />

powierzchnią. Poniżej przedstawiony został fragment<br />

skryptu przy pomocy którego można wykonać trójkąt<br />

równoboczny.<br />

Rysunek 15: Obiekty połączone przy pomocy<br />

funkcji frame.<br />

# trojkat<br />

POZ_x = -1.0<br />

POZ_y = 1.0<br />

POZ_z = 0.0<br />

Rysunek 16: Obiekty wykonane za<br />

trojkat = convex(color=(1,0,0.5))<br />

pomocą funkcji convex.<br />

x = arange(0,2*math.pi,2*math.pi/3)<br />

trojkat.pos = transpose( (sin(x)+POZ_x, cos(x)+POZ_y, 0*x+POZ_z) )<br />

25

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

Saved successfully!

Ooh no, something went wrong!