¿Qué son los vectores?
Los vectores son conjuntos de coordenadas de dimensión variable. Cada coordenada en un vector representa una posición absoluta en esa dirección del espacio en el que se encuentra el vector.
- Un vector 1-D sería {1} . Esto podría ser, por ejemplo, una posición en X = 1. O un tiempo t = 1.
- Un vector 2-D sería {-4,3} . Esto podría ser, por ejemplo, una posición en -4 en el eje X y 3 en el eje Y. También podría ser la temperatura (3 grados) en una posición (-4 metros) en el eje X.
- Un vector tridimensional sería {1,2,3} . Esta podría ser una posición en el espacio 1 a lo largo del eje X, 2 hacia atrás en el eje Y y 3 hacia arriba en el eje Z. O podría ser 1 rojo, 2 verdes y 3 azules en un color. O podría ser una posición XY ( {1,2} ) en algún momento T ( {3} ).
Tenga en cuenta que en todos los casos, hemos asignado significado a los vectores para nuestro problema. Si bien comúnmente encontrarás vectores que se usan para la geometría en los juegos, no hay razón para que no puedas hacer otra cosa con ellos.
¿Por qué uso vectores?
Primero, nunca tienes que usar vectores. Siempre que realice un seguimiento de x e y, o de las coordenadas que le interesen, de alguna manera estará bien.
Sin embargo, la ventaja de usar vectores es que representan claramente cosas como la dirección y la posición, y también tienen varias operaciones matemáticas definidas en ellos que hacen su vida más fácil.
Para un ejemplo simple de estos, considere el producto punto .
Supongamos que tiene un sistema de radar en un juego de estilo de arriba hacia abajo. Cada enemigo que aparece en el sector del radar (una cuña en forma de pastel en 2D) debería tener un pequeño punto rojo en la pantalla. Entonces, debes descubrir qué enemigos hay en tu sección de radar.
Podrías probar si los enemigos están dentro de un triángulo. También podría probar si los enemigos están contenidos en la intersección de los dos medios espacios de los planos / líneas que definen los dos lados del sector del radar.
O bien, puede usar un producto de puntos para hacer la verificación. Así es cómo:
- Cree un vector que vaya desde el centro del radar hacia el "frente del radar". Normalizarlo
- Cree un vector que vaya desde el centro del radar hacia el objeto del que queremos verificar la visibilidad del radar. Normalizarlo
- Tome el producto escalar de los dos vectores normalizados.
- Tome el arcocoseno de ese producto y verifique si tiene menos de la mitad del ángulo del ancho del radar. Si es así, dibuja un blip.
Esto es muy útil, y ahora también le permite tener fácilmente radares que apuntan en diferentes direcciones (solo cambie el vector de avance) y tengan diferentes anchos (solo cambie el ángulo de ancho del radar), y también puede reutilizar el mismo código para esos casos !
¿Por qué si no uso vectores?
Si está en 2D, quizás la mejor manera de lograr efectos y movimientos complejos (girar, escalar, etc.) es usar un gráfico de escena. Un planeta tiene una nave en órbita, la nave tiene un avión no tripulado en órbita. El cálculo para esto sin usar matemáticas vectoriales es realmente feo.
Con las matemáticas vectoriales, representamos que cada uno tiene un punto y una matriz de transformación 3x3. El planeta usa su transformación, la nave usa su transformación y la transformación del planeta, y el dron usa su transformación y la transformación de la nave y la transformación del planeta.
Cuando el planeta se mueve, cambias su transformación, y la nave y el dron se posicionan automáticamente "gratis". Mucho código más limpio.
Todavía no está convencido.
Los vectores también son la representación nativa de la posición, la geometría y el movimiento que utilizan casi todas las bibliotecas de gráficos, y ciertamente OpenGL y DirectX. No es probable que salgas sin tener que usarlos.
Conclusión Los
vectores son una herramienta poderosa para escribir código claro que resuelve problemas geométricos de manera limpia y elegante.