Qual è la differenza tra una trasformazione punto e una trasformazione vettoriale?


11

Questo è ciò che il mio professore mi ha detto durante i corsi:

Consideriamo solo matrici 4 * 4. Vengono utilizzati per ruotare, ridimensionare o tradurre oggetti (o qualsiasi combinazione di queste operazioni). Le matrici vengono utilizzate anche in seguito nell'implementazione del modello di videocamera virtuale. Se non conosci la differenza tra una trasformazione vettoriale e una trasformazione punto, cercala.

Non riesco a trovare una risposta e ho creato un account per questo sito Web solo per questa domanda.


1
In complemento a tutte le altre risposte e perché altre persone già risposto a questa domanda di lunghezza altrove è possibile controllare: scratchapixel.com/lessons/...
user18490

Risposte:


9

Ecco la semplice risposta.

In 4D, per essere in grado di moltiplicarli per una matrice 4x4, i vettori sono rappresentati come (x, y, z, 0) e i punti sono rappresentati come (x, y, z, 1).

Poiché la quarta riga di una matrice 4x4 rappresenta la traduzione della matrice, le rappresentazioni di cui sopra ne fanno sì che i punti siano influenzati dalla traduzione, ma i vettori no.

Sia i vettori che i punti sono influenzati dalla rotazione, dal ridimensionamento, ecc.

Avvertimento:

C'è una discussione più approfondita se si prevede che i vettori abbiano determinate proprietà. Ad esempio, se trasformi un triangolo normale con la stessa matrice, trasformi i vertici del triangolo, probabilmente non sarà più il vettore normale di quel triangolo. Questo perché i vettori normali hanno una sorta di relazione inversa con i vertici da cui sono calcolati.


Le normali non funzionano perché non sono vettori. Non conosco una buona introduzione al concetto però.
MB Reynolds,

@MBReynolds In senso matematico, le normali sono vettori quanto punti o direzioni. Il problema qui è che le trasformazioni che applichiamo ai punti di una superficie per trasformarle non si applicano alle normali.
nbro,

2
le normali di superficie sono bivettori, non vettori. Possiamo trovare un normale dal prodotto incrociato di due vettori, il risultato è un bivettore. VEDI Per Vogensen: gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB Reynolds

4

4×44×4

4×4

Ora la domanda è: come si passa da un sistema di coordinate 3D a un sistema 4D ? La risposta è " coordinate omogenee ".

4×4

4×44×43D

Come lo facciamo?

Distinguiamo tra vettori di direzione e posizione . I vettori di direzione, come suggerisce il nome, hanno una direzione verso cui puntano; ci preoccupiamo anche della loro lunghezza, ma non sono interessati dalle traduzioni, dal momento che non ci interessa la loro posizione. I vettori di posizione (o semplicemente "punti") possono essere tradotti o spostati; di solito sono rappresentati rispetto all'origine, cioè come un vettore dall'origine al punto stesso.

0401

3Dv=(v1v2v3)v=(v1v2v30)u=(u1u2u3)u=(u1u2u31)

3D4th10


(wx,wy,wz,w)w0(x,y,z)w=1wusando anche la moltiplicazione della matrice 4D.
Ilmari Karonen,

2

Se cerchi la definizione di un vettore e di un punto, un vettore è:

Una quantità, come la velocità, completamente specificata da una grandezza e una direzione. http://www.thefreedictionary.com/vector

E un punto è:

Un oggetto geometrico senza dimensioni senza proprietà tranne la posizione. http://www.thefreedictionary.com/point

Quindi potresti dire che un vettore è una direzione con scala e un punto è una posizione.

Quindi, se trasformi un vettore, devi solo ruotarlo e ridimensionarlo. Con un punto lo traduci anche (la rotazione e il ridimensionamento di un punto sono intorno all'origine, poiché emette solo una posizione in cui il punto stesso non può essere ruotato).

La maggior parte delle volte un vettore e un punto vengono inseriti nello stesso contenitore, un vettore con 4 componenti. L'unica differenza è il componente w. Se il componente w è 0, allora è una direzione. Se è 1, il vettore è un punto.

La ragione di ciò può essere trovata nella matrice stessa. Si avvale del modo in cui moltiplichi un vettore con 4 componenti con una matrice 4x4. Se non sai come funziona, suggerirei un rapido google.

[rot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslation0001]

Come puoi vedere, se l'ultimo componente è 0, allora hai una moltiplicazione con 0 e quindi il risultato è 0 e non c'è traduzione.

Ciò semplifica la computer grafica con oggetti poligonali. Hai la stessa matrice di trasformazione per trasformare le posizioni ma anche le normali. Poiché le normali hanno il loro componente w impostato su 0 e la posizione 'w componente è 1, le normali sono appena ruotate (e anche ridimensionate, il che può portare ad alcune cose strane, quindi la maggior parte delle volte la normalità viene normalizzata dopo. Non è' in realtà ho raccomandato di usare la stessa matrice per posizioni e rotazioni a causa delle cose strane! Guarda il commento di @JarkkoL.) e le posizioni vengono tradotte (e ruotate e ridimensionate attorno all'origine).

Spero di non aver fatto un errore: P, e questo ti ha aiutato!


2
Le normali non vengono trasformate con la stessa matrice di trasformazione delle posizioni. È necessario calcolare l'inverso della trasposizione della sotto-matrice 3x3 per trasformare correttamente le normali per trasformazioni con ridimensionamento e / o inclinazione non uniformi.
JarkkoL

@JarkkoL sì, è vero, hai ragione. È meglio non usare la stessa matrice, ma a seconda dell'implementazione, è fatto. La maggior parte delle volte alle persone non interessa molto l'inclinazione delle normali, perché o non usano affatto il ridimensionamento o il ridimensionamento non uniforme. Quella parte sulla trasformazione di posizioni e normali era più che altro che poteva essere utile usare un contenitore.
bram0101
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.