¿Cuál es la diferencia entre una transformación de punto y una transformación de vector?

11

Esto es lo que mi profesor me dijo en el curso:

Solo consideramos 4 * 4 matrices. Estos se utilizan para rotar, escalar o traducir objetos (o cualquier combinación de estas operaciones). Las matrices también se usan más adelante en la implementación del modelo de cámara virtual. Si no conoce la diferencia entre una transformación de vector y una transformación de punto, búsquela.

Parece que no puedo encontrar una respuesta e hice una cuenta para este sitio web solo por esta pregunta.

SA
fuente
1
Como complemento a todas las otras respuestas y porque otras personas ya respondieron esta pregunta en otra parte, puede consultar: scratchapixel.com/lessons/…
user18490

Respuestas:

9

Aquí está la respuesta simple.

En 4D, para poder multiplicarlos por una matriz 4x4, los vectores se representan como (x, y, z, 0) y los puntos se representan como (x, y, z, 1).

Dado que la cuarta fila de una matriz 4x4 representa la traducción de la matriz, las representaciones anteriores hacen que los puntos se vean afectados por la traducción, pero los vectores no.

Sin embargo, tanto los vectores como los puntos se ven afectados por la rotación, el escalado, etc.

Consideración:

Hay una discusión más profunda si espera que los vectores tengan ciertas propiedades. Por ejemplo, si transforma la normalidad de un triángulo por la misma matriz que transforma los vértices del triángulo, probablemente ya no será el vector normal de ese triángulo. Esto se debe a que los vectores normales tienen una especie de relación inversa con los vértices a partir de los cuales se calculan.

Alan Wolfe
fuente
Las normales no funcionan porque no son vectores. Sin embargo, no conozco una buena introducción al concepto.
MB Reynolds
@MBReynolds En un sentido matemático, las normales son vectores como puntos o direcciones. El problema aquí es que las transformaciones que aplicamos a los puntos de una superficie para transformarlas no se aplican a las normales.
nbro
2
las normales de superficie son bivectores, no vectores. Podemos encontrar una normal por el producto cruzado de dos vectores, el resultado es un bivector. VER por Vogensen's: gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB Reynolds
4

4×44×4

4×4

Ahora la pregunta es: ¿cómo pasamos de un sistema de coordenadas 3D a uno 4D ? La respuesta es " coordenadas homogéneas ".

4×4

4×44×43D

¿Cómo lo hacemos?

Distinguimos entre vectores de dirección y posición . Los vectores de dirección, como su nombre indica, tienen una dirección a la que apuntan; También nos importa su longitud, pero no se ven afectados por las traducciones, ya que no nos importa su posición. Los vectores de posición (o simplemente "puntos") se pueden traducir o mover; generalmente se representan con respecto al origen, es decir, como un vector desde el origen hasta el punto mismo.

0401

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

3D4th10

nbro
fuente
(wx,wy,wz,w)w0(x,y,z)w=1wusando la multiplicación de matriz 4D, también.
Ilmari Karonen
2

Si busca la definición de un vector y un punto, entonces un vector es:

Una cantidad, como la velocidad, completamente especificada por una magnitud y una dirección. http://www.thefreedictionary.com/vector

Y un punto es:

Un objeto geométrico adimensional que no tiene propiedades excepto la ubicación. http://www.thefreedictionary.com/point

Entonces se podría decir que un vector es una dirección con escala, y un punto es una ubicación.

Entonces, si transforma un vector, simplemente gira y escala. Con un punto también lo traduce (la rotación y escala de un punto está alrededor del origen, ya que es solo una ubicación, el punto en sí no puede rotarse).

La mayoría de las veces un vector y un punto se colocan en el mismo contenedor, un vector con 4 componentes. La única diferencia es el componente w. Si el componente w es 0, entonces es una dirección. Si es 1, entonces el vector es un punto.

La razón de esto se puede encontrar en la matriz misma. Utiliza la forma en que multiplicas un vector con 4 componentes con una matriz 4x4. Si no sabe cómo funciona, sugeriría un google rápido.

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

Como puede ver, si el último componente es 0, entonces tiene una multiplicación con 0 y, por lo tanto, el resultado es 0 y no hay traducción.

Esto lo hace fácil en gráficos de computadora con objetos poligonales. Tiene la misma matriz de transformación para transformar las posiciones pero también las normales. Debido a que las normales tienen su componente w establecido en 0 y la posición 'componente w es 1, las normales simplemente se giran (y también se escalan, lo que puede conducir a algunas cosas extrañas, por lo que la mayoría de las veces la normalidad se normaliza después. No es' ¡Realmente recomiendo usar la misma matriz para posiciones y rotaciones debido a las cosas raras! Mire el comentario de @JarkkoL.) y las posiciones se traducen (y giran y escalan alrededor del origen).

Espero no haber cometido un error: P, ¡y esto te ayudó!

bram0101
fuente
2
Las normales no se transforman con la misma matriz de transformación que las posiciones. Debe calcular la inversa de la transposición de la submatriz 3x3 para transformar correctamente las normales para transformaciones con escalado y / o sesgo no uniformes.
JarkkoL
@JarkkoL sí, eso es cierto, tienes razón con eso. Es mejor no usar la misma matriz, pero dependiendo de la implementación, se hace. La mayoría de las veces las personas no se preocupan demasiado por el sesgo de las normales, ya que no usan escalamiento no uniforme o escala en absoluto. Esa parte sobre la transformación de posiciones y normales era más sobre que podría ser útil usar un contenedor.
bram0101