vector()

Il vettore è un oggetto che non può essere visualizzato ma che è presente in tutti gli oggetti 3d (pos, axis, …)

Risultato
vector()vectorCostruttore
Attributo
v.xfloat
v.yfloat
v.zfloat
v.hatvectorVettore normalizzato
v.magfloatMagnitudo
v.mag2floatMagnitudo al quadrato
Operatore
v1 + v2vectorAddizione
v1 v2vectorSottrazione
k * vvectorMoltiplicazione per uno scalare
v / kvectorDivisione per uno scalare
v1 == v2boolUguale a …
v1 is v2boolCoincide con …
Metodo di classe
vector.random()vectorVettore casuale con x, y, z in [-1.0, 1.0)
Metodo
v1.comp(v2)float???
v1.cross(v2)vectorProdotto vettoriale
v1.diff_angle(v2)floatAngolo con …
v1.dot(v2)floatProdotto scalare con …
v1.equals(v2)boolUguale a …
v.norm()vectorVettore normalizzato
v1.proj(v2)vector???
v1.rotate(a, v2)vector???
Funzione
comp(v1, v2)float???
cross(v1, v2)vectorProdotto vettoriale
diff_angle(v1, v2)floatAngolo tra …
dot(v1, v2)floatProdotto scalare
hat(v)vectorVettore normalizzato di …
mag(v)floatMagnitudo di …
mag2(v)floatMagnitudo al quadrato di …
norm(v)vectorVettore normalizzato di …
proj(v1, v2)vector???
rotate(v1, a, v2)vector???

Ancora …

  1. t=astuple(v)
  2. k = dot(v1, norm(v2))
  3. v3=dot(v1, norm(v2))*norm(v2)
  4. v3=rotate(vector=v1, angle=a, axis=v2)

I vettori possono essere utilizzati come attributi aggiuntivi degli oggetti (velocità, …)

from vpython import *

a = ...
b = ...
c = ...

vettore = vector(a, b, c)

oggetto = ...
oggetto.velocità = vettore

Se crei un vettore puoi fare riferimento alle sue componenti come campi x, y e z

from vpython import *

vettore = vector(10, 20, 30)

print(vettore)                          # <10, 20, 30>
print(vettore.x, vettore.y, vettore.z)  # 10.0 20.0 30.0

Vettore casuale

Un vettore con direzione casuale e componenti in [-1, 1]

vettore = vector.random()

Uguali?

from vpython import *

vettore1 = vector(1, 2, 3)
vettore2 = vector(1, 2, 3)

r1 = (vettore1 == vettore2)      # True
r2 = vettore1.equals(vettore2)   # True
r3 = vettore1 is vettore2        # False

Modulo

Magnitudo e quadrato di magnitudo

from vpython import *

vettore = vector(1, 2, 3)
 
k  = mag(vettore)   # 3.741657...
k  = vettore.mag    # 3.741657...
k2 = mag2(vettore)  # 14.0
k2 = vettore.mag2   # 14.0

Si può assegnare il modulo di un vettore a un altro vettore (mantenendo la direzione)

from vpython import *

vettore1 = vector(1, 2, 3)
vettore2 = vector(1, 1, 1)

print(vettore1, vettore1.mag)  # <1, 2, 3> 1.7320508075688772
print(vettore2, vettore2.mag)  # <1, 1, 1> 1.7320508075688772

vettore1.mag = vettore2.mag

print(vettore1, vettore1.mag)  # <0.46291, 0.92582, 1.38873> 1.7320508075688772
print(vettore2, vettore2.mag)  # <1, 1, 1>                   1.7320508075688772

Addizione

Per sommare due vettori non è necessario sommare le componenti una per una

from vpython import *

vettore1 = vector(1, 2, 3)
vettore2 = vector(4, 5, 6)
vettore3 = vettore1 + vettore2

print(vettore1)  # <1, 2, 3>
print(vettore2)  # <4, 5, 6> 
print(vettore3)  # <5, 7, 9>

Prodotto per uno scalare

from vpython import *

k = 2

vettore1 = vector(1, 2, 3)
vettore2 = k*vettore1       # <2, 4, 6>

Prodotto scalare

from vpython import *

vettore1 = vector(1, 2, 3)
vettore2 = vector(4, 5, 6)

k1  = dot(vettore1, vettore2)  # 32.0
k2  = vettore1.dot(vettore2)   # 32.0

Prodotto vettoriale

vettore1 = vector(1, 0, 0)
vettore2 = vector(0, 1, 0)
vettore3 = cross(vettore1, vettore2)  # <0, 0, 1>
vettore4 = cross(vettore2, vettore1)  # <0, 0, -1>  

Normalizzazione

Un vettore unitario con la stessa direzione

vettore1 = vector(1, 2, 3)
vettore2 = vettore1/mag(vettore1)  # <0.267261, 0.534522, 0.801784>
vettore3 = vettore1.norm()         # <0.267261, 0.534522, 0.801784>
vettore4 = norm(vettore1)          # <0.267261, 0.534522, 0.801784>
vettore5 = vettore1.hat            # <0.267261, 0.534522, 0.801784>
vettore6 = hat(vettore1)           # <0.267261, 0.534522, 0.801784>

Si può assegnare la direzione di un vettore a un altro vettore (mantenendo il modulo)

from vpython import *
 
vettore1 = vector(1, 2, 3)
vettore2 = vector(1, 1, 1)
 
print(vettore1, vettore1.hat, vettore1.mag)  # <1, 2, 3>
                                             # <0.267261, 0.534522, 0.801784>
                                             # 3.7416573867739413
print(vettore2, vettore2.hat, vettore2.mag)  # <1, 1, 1>
                                             # <0.57735, 0.57735, 0.57735>
                                             # 1.7320508075688772
 
vettore1.hat = vettore2
 
print(vettore1, vettore1.hat, vettore1.mag)  # <2.16025, 2.16025, 2.16025> 
                                             # <0.57735, 0.57735, 0.57735>
                                             # 3.7416573867739418


t=v.astuple()