Vektorji


Kaj so, kaj z njimi počnemo

Morda si opazil, da smo v prejšnjem poglavju definirali hitrost krogle kot vektor:

   krogla.hitrost=vector(1,0,0)

Funkcija vector() je konstruktor in omogoča tvorbo nevidnih objektov, ki imajo več vgrajenih lastnosti in metod. Med njimi najdemo naslednje:

Vektorje lahko med seboj seštevamo, lahko jih tudi množimo s skalarno veličino.

Primer seštevanja:

   a = vector(1.,2.,3.)
   b = vector(4.,5.,6.)
   c = a + b               #ker sta a in b vektorja, bo tudi c vektor

Ugotavljanje magnitude

   d = mag(c)           # d je skalar
   z = mag(c)**2      # vektorja ne moremo kvadrirati,  njegovo magnitudo pa

Primer skalarnega množenja

   d = 3.*a              # d je vektor s komponentami (3., 6., 9.)

Primeri vektorskih produktov

   f = cross(a,b)     # vektorski produkt
    g = dot(a,b)      # skalarni  produkt
    h = norm(a)      # normaliziran  vektor, vektor enote

Primer - vodoravni met krogle

Oglejmo si znani fizikalni poskus, ko predmet vržemo vodoravno in začne padati pod vplivom gravitacije:  Spoznalo bomo, da so vektorji pripravna stvar za računanje trajektorij in drugih podobnih pojmov v 3D grafiki  fiziki, matematiki.

Tu je potreben program:

GlowScript 3.0 VPython
krogla=sphere(radius=0.25, pos=vector(-1,1,0))
krogla.masa=2.0 #krogli smo dodali atribut z imenom "masa" krogla.sled=curve() #sled bo prikazovala gibanje krogle
sila= vector(0,-20,0) #tvorimo vektor z imenom "sila". ta deluje le v smeri -y
krogla.hitrost=vector(5,0,0) #hitrost je tudi vektor. Zacetna hitrost je v smeri +x
krogla.pospesek=sila/krogla.masa
#Ker je sila vektor, masa pa skalar, je pospesek vektor (0,-10,0).
# krogla bo zato pospesevala navzdol
dt=.01

while krogla.pos.x<2:
scene.autoscale=0 # S tem le prekinemo stalno skaliranje scene.
rate(1/dt)
krogla.hitrost+=krogla.pospesek*dt #Hitrost se spreminja zaradi pospeska
krogla.pos+=krogla.hitrost*dt #osvezi polozaj krogle z upostevanjem hitrosti
krogla.sled.append(pos=krogla.pos) #risi sled za kroglo