¿Qué es tan diferente / complicado / útil sobre los vectores?

21

Perdóname si esto no se considera una pregunta real, pero es algo de lo que estoy realmente confundido.

Constantemente escucho a otros desarrolladores de juegos hablar sobre cómo el uso de vectores es muy útil, pero también sobre cómo a todos les intimidan las matemáticas vectoriales y los vectores pueden parecer desalentadores. Nunca he llegado a aprender sobre ellos.

Entonces, finalmente busqué Vector en Wikipedia, y me sorprendió. A menos que me equivoque de alguna manera, un vector (por simplicidad, digamos que es 2D), es solo una coordenada x e y. Si he entendido mal, corríjame.

Entonces, esta es mi pregunta: ¿no significa eso que cualquier representación de coordenadas de dos (o tres) dimensiones es un vector? Si es así, entonces los vectores y las coordenadas son lo mismo. Y es prácticamente imposible crear un juego sin usar coordenadas, entonces, ¿cómo son los vectores confusos o nuevos para alguien que ha realizado alguna cantidad de programación de juegos?

Esto es algo en lo que podría usar algunas aclaraciones. Cualquier ayuda es apreciada.

paisaje estelar
fuente
55
Los vectores son bastante simples hasta que comienzas a hacer rotaciones en 3D ... entonces necesitas cuaterniones y te dejarán boquiabierto.
Alistair Buxton
La noción de vector es realmente confusa. He preguntado en matemáticas, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 pero no obtuve una respuesta clara. Es pura frustración. Puede ser que pueda agregarle.
Val
1
Con todas las malas analogías en estas respuestas, no es de extrañar que la gente se confunda.
Alistair Buxton

Respuestas:

29

¡No dejes que un matemático te escuche llamando puntos o coordenadas de Vectores!

Un vector 2D tiene un componente xey , no coordenadas. Los vectores no definen una posición, definen una dirección y una magnitud.

No puedo decirte por qué las personas se sienten intimidadas por ellas, probablemente la misma razón por la cual las matemáticas se sienten intimidadas en general, ¡porque todos dicen que es difícil antes de que sepan algo al respecto!

Los vectores y las coordenadas no son lo mismo. Se parecen, pero la forma en que se usan es muy diferente.

Las coordenadas definen una posición en el mundo. Los vectores definen una dirección y magnitud. Los dos a menudo se usan juntos. Como ejemplo:

Un personaje tiene una posición y una velocidad. La posición es una coordenada y la velocidad es un vector. Agregar la velocidad a la posición moverá al personaje en la dirección del vector a una distancia definida por la magnitud del vector (tenga en cuenta que la magnitud del vector es la velocidad, por lo que esto nos da una dirección y una velocidad).

O en este ejemplo:

ingrese la descripción de la imagen aquí

Los dos personajes tienen posiciones y el disparo láser es un vector. Un vector entre las dos posiciones es (3,1). Eso significa que viaja +3 a lo largo del eje X y +1 a lo largo del eje Y. Donde la magnitud se puede encontrar con Sqrt ((X X) + (Y Y)).

Puede encontrar una buena descripción de las matemáticas vectoriales en el blog de Wolfire

MichaelHouse
fuente
77
No solo los matemáticos se molestan cuando alguien llama a un Vector punto o coordenada. Nosotros, los físicos, también te confundiremos.
TASagent
2
+1 Pero si estoy buscando liendres, la velocidad es un vector y la velocidad es la magnitud de ese vector.
Ergwun
2
@Val: No diría que no tiene sentido. Aborda la idea errónea de la pregunta de que los vectores son solo coordenadas x e y. Hacer que la respuesta sea más formal o precisa al mencionar 'elementos del espacio vectorial' no serviría de nada a nadie, excepto ayudar a explicar por qué las personas consideran que el álgebra vectorial es intimidante.
Marca Thomas el
3
Los vectores son solo una posición, ya que te dicen dónde estarías si los aplicaras a (0,0). Los vectores pueden modificar una posición, pero no contienen información de posición en sí mismos. Entiendo lo que dices. Creo que la diferencia de la que estamos hablando no es significativa para esta pregunta. Esta es la forma en que los vectores se usan en el desarrollo de juegos. Gracias por tu contribución.
MichaelHouse
44
@Val: cualquier buena lectura de álgebra lineal estará de acuerdo con Byte56: los vectores no son lo mismo que las posiciones en el espacio . Tiene sentido agregar "3 millas al norte y 1 milla al este" a "1 milla al sur"; pero no tiene sentido agregar "la posición de la Casa Blanca" a "la posición del Pentágono". Una vez que fija el punto de referencia como (0,0), puede usar vectores para determinar puntos, y viceversa, por lo que en algunas representaciones, se ven similares; Pero son diferentes. Abstractamente: compara afín espacio vs. espacio vectorial .
PLL
9

Creo que el factor de intimidación puede surgir cuando comienzas a lidiar con operaciones más complicadas, como la normalización, los productos de puntos y cruzados, y el uso de múltiples sistemas de coordenadas con matrices para transformarse entre ellos. Estos no son necesariamente fáciles de entender al principio, incluso si tiene una geometría sólida y un fondo de álgebra.

Además, al menos en los EE. UU., Las personas que han pasado por la secuencia matemática típica de la escuela secundaria están acostumbradas a pensar en la geometría en términos de líneas, pendientes, ángulos, etc. Tienen que desaprender esas cosas en cierta medida y aprender a piénselo en términos de vectores y matrices en su lugar. No es que los conceptos de álgebra lineal sean tan extensos, sino que son un conjunto de conceptos algo diferente de los utilizados en geometría clásica, que las personas probablemente hayan aprendido en la escuela.


Por cierto, la distinción entre vectores y puntos radica en las operaciones que puede realizar en ellos. Aunque ambos están representados (en un sistema de coordenadas particular) por una lista de componentes y, por lo tanto, se ven "iguales", las operaciones permitidas no son las mismas. Por ejemplo, puede agregar dos vectores o multiplicar un vector por un escalar. No se puede hacer eso con puntos, o al menos, no tiene ningún sentido hacerlo. Pero puede restar dos puntos, y el resultado es un vector de un punto a otro. También puede agregar un punto a un vector para obtener un nuevo punto.

Los puntos y los vectores también se comportan de manera diferente con respecto a las transformaciones. A saber, los puntos están sujetos a traducción, mientras que los vectores no. Considere el ejemplo de un objeto que se mueve con una posición (punto) y una velocidad (vector); Si traslada el objeto a un lugar diferente, modifica su posición, pero no su velocidad.

De hecho, promoviendo esta línea de razonamiento, no hay solo vectores; Hay otras entidades como los covectores y los bivectores , que también pueden "parecerse" a un vector en términos de tener una lista de componentes en un sistema de coordenadas, pero que se comportan de manera diferente en términos de las operaciones disponibles y la forma en que reaccionan a las transformaciones. Todos estos pertenecen a un campo de las matemáticas llamado álgebra de Grassmann . Más allá de eso, uno puede ser aún más general y considerar el álgebra tensorial . Sin embargo, esto es algo avanzado.

Nathan Reed
fuente
1
Una gran parte de mi confusión fue por qué la gente pensaba que los vectores eran tan complicados, por lo que esto ayudó. Quizás los encuentro simples porque en realidad estaba usando geometría en la programación antes de tomar la geometría de la escuela secundaria.
Starscape
1
El ejemplo de posición vs velocidad utilizado en un par de respuestas se desglosa cuando tiene posición (punto), velocidad (vector) y aceleración (vector). Si cambia la velocidad, la aceleración no cambia, pero ambos son vectores. La distinción entre vector y punto, si bien es correcta, es una distracción: en la práctica, todos los juegos almacenan posiciones como vectores que están implícitamente relativos al origen (quizás indirectamente si se usa un gráfico de escena).
Alistair Buxton
1
@AlistairBuxton No sigo su punto: si traduce su sistema de coordenadas, ni la velocidad ni la aceleración de un objeto cambian, pero si gira las coordenadas, tanto la velocidad como la aceleración se rotarían. Así que no veo dónde se "descompone" nada.
Nathan Reed
2
@AlistairBuxton Y no existe tal cosa como "almacenar posiciones como vectores". Los juegos almacenan tanto posiciones como vectores como listas de componentes escalares en un sistema de coordenadas particular. Eso no los hace lo mismo. Para hacer una analogía: los ints y los flotantes se almacenan como una lista de bits binarios, pero significan cosas diferentes y tienen diferentes operaciones.
Nathan Reed
1
@Val Estás completamente fuera de lugar. Un vector no es [posición p, velocidad v]. No tiene tanto un punto como una velocidad dentro de él. Es solo [velocidad x, velocidad y, velocidad z] (para un vector de velocidad). El punto es que este es un tipo diferente de cosas de [posición x, posición y, posición z].
Nathan Reed
7

Los vectores realmente no son tan malos. Solo hay un poco de matemática con la que la gente no está familiarizada.

En primer lugar, un Vector no representa una posición en el espacio. Esto es conceptualmente muy importante. Un vector representa una dirección, como 'Norte', y una magnitud. En un mapa con coordenadas matemáticas normales XY, 'Norte' sería el vector (0,1) (arriba en el eje Y). Esto no debe confundirse con la posición (0,1), que está una unidad arriba donde sea que coloque el origen. Un vector es una dirección y una magnitud .

El desplazamiento (movimiento) es un vector (como mover dos unidades hacia arriba y una unidad hacia la derecha), la posición no lo es.

Los vectores, en sí mismos, no son con lo que las personas tienen problemas. Por lo general, son matrices y operaciones en vectores.

Por ejemplo, si multiplica un Vector por una matriz especial llamada 'Matriz de rotación', entonces el vector gira por la cantidad especificada por la matriz. Además, algunas personas tienen problemas con la multiplicación de matrices. Búscalo si no estás familiarizado con él.

Además, puede 'apilar' estas matrices (u operaciones) juntas. Como Rotar 90 grados alrededor del eje X, luego Rotar 90 grados alrededor del eje Y. Si llamamos a la primera matriz M y a la segunda matriz N, entonces la operación sería v * M * N. Sin embargo, la multiplicación de matrices no es conmutativa, por lo que no es lo mismo que v * N * M.

En la programación de Gráficos, realiza operaciones considerablemente más complicadas en vectores y otras matrices regularmente. Transformaciones para FoV y para poner sus coordenadas en el espacio de la pantalla, etc. Realmente no es tan malo, pero puede ser intimidante para las personas nuevas.

TASagent
fuente