Come Calcolare la Funzione LookAt
Introduzione
Per definire matematicamente la funzione lookAt, devono essere fatte alcune definizioni preliminari. Supponiamo che tu stia in piedi guardando un punto. Dove sei in piedi lo definiamo come P_eye. Il punto che stai guardando lo definiamo come P_current. Il punto che stai "cercando" di guardare lo definiamo come P_target. La funzione lookAt è una funzione che, dati questi punti, calcola l'angolo necessario per ruotare P_eye da P_current a P_target (in altre parole, l'angolo che devi girare la testa per guardare P_target). In termini tecnici, la funzione lookAt è l'arc-coseno del prodotto scalare del vettore dall'occhio al punto corrente e del vettore dall'occhio al punto bersaglio.
Cosa ti serve
- Matita
- Carta
- Calcolatrice
Istruzioni
1. Disegna gli assi x e y
L'asse x va orizzontalmente (una linea che va da sinistra a destra), e l'asse y va verticalmente (una linea che va dal basso verso l'alto).
2. Definisci P_eye
Per la funzione lookAt, tutti i punti devono essere definiti in 2 dimensioni. Ad esempio, possiamo definire P_eye come il punto (1,1)--questo significa che disegnamo un punto che è 1 unità nella direzione "x" (sinistra) e una unità nella direzione "y" (su).
3. Definisci P_current
Questo è il punto che l'occhio sta guardando attualmente. Ad esempio, possiamo definire P_current come (3,3).
4. Definisci P_target
Questo è il punto "bersaglio" che l'occhio guarderà eventualmente. Ad esempio, questo punto può essere (2, 5).
5. Calcola N_current
Questo è il vettore da P_eye a P_current, o in altre parole, P_current - P_eye. Nel nostro esempio, N_current è: (3,3) - (1,1) = (2,2).
6. Calcola N_target
Questo è il vettore da P_eye a P_target, o in altre parole, P_target - P_eye.
Nel nostro esempio, N_target è: (2,5) - (1,1) = (1,4).
7. Calcola il prodotto scalare
Calcola il prodotto scalare di N_current e N_target. Nel nostro esempio otteniamo: (2,2). (1,4) = 2*1 + 2*4 = 2 + 8 = 10.
8. Prendi l'arc-coseno
Prendi l'arc-coseno della risposta ottenuta nel passaggio precedente. Nel nostro esempio, otteniamo: arccos(10) = 1.47 radiani. Questo è l'output finale della funzione lookAt; è l'angolo che l'occhio deve girare per guardare il punto bersaglio.