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.
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