Il vettore è un oggetto che non può essere visualizzato ma che è presente in tutti gli oggetti 3d (pos, axis, …)
Risultato | ||
---|---|---|
vector() | vector | Costruttore |
Attributo | ||
v.x | float | … |
v.y | float | … |
v.z | float | … |
v.hat | vector | Vettore normalizzato |
v.mag | float | Magnitudo |
v.mag2 | float | Magnitudo al quadrato |
Operatore | ||
v1 + v2 | vector | Addizione |
v1 – v2 | vector | Sottrazione |
k * v | vector | Moltiplicazione per uno scalare |
v / k | vector | Divisione per uno scalare |
v1 == v2 | bool | Uguale a … |
v1 is v2 | bool | Coincide con … |
Metodo di classe | ||
vector.random() | vector | Vettore casuale con x, y, z in [-1.0, 1.0) |
Metodo | ||
v1.comp(v2) | float | ??? |
v1.cross(v2) | vector | Prodotto vettoriale |
v1.diff_angle(v2) | float | Angolo con … |
v1.dot(v2) | float | Prodotto scalare con … |
v1.equals(v2) | bool | Uguale a … |
v.norm() | vector | Vettore normalizzato |
v1.proj(v2) | vector | ??? |
v1.rotate(a, v2) | vector | ??? |
Funzione | ||
comp(v1, v2) | float | ??? |
cross(v1, v2) | vector | Prodotto vettoriale |
diff_angle(v1, v2) | float | Angolo tra … |
dot(v1, v2) | float | Prodotto scalare |
hat(v) | vector | Vettore normalizzato di … |
mag(v) | float | Magnitudo di … |
mag2(v) | float | Magnitudo al quadrato di … |
norm(v) | vector | Vettore normalizzato di … |
proj(v1, v2) | vector | ??? |
rotate(v1, a, v2) | vector | ??? |
Ancora …
- t=astuple(v)
- k = dot(v1, norm(v2))
- v3=dot(v1, norm(v2))*norm(v2)
- 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()