Fisicas en los juegos

Este tutorial trata sobre las "fisicas", pero a que llamamos "fisicas"? Pues no es nada mas ni nada menos que intentar representar en el juego la situacion de que estamoss en el mundo real. Quizas si lo que queremos hacer es un "pacman", no tenga mucho sentido preocuparse mucho por las fisicas :) pero si que tiene mucho que ver si tratamos de programar cualquier simulador de coches, motos, aviones, etc...o siempre que queramos anadir a nuestro juego elementos que se comportem como "reales" (a saber, cosas que se caen y rebotan, cosas que se golpean entre si, etc...)

Que es lo que hace a un objeto parecer real? el que se mueva de acuero con las leyes naturales, es decir con las leyes fisicas.

 

Matematicas en 3D

Vamos a trabajar con el eje cartesiano (eje X Y Z) como hemos hecho hasta ahora, a la hora de representar vectores y demas en nuestro espacio 3D. Los vectores van a ser algo muy util a la hora de calculara las fisicas.

Segun nuestro sistema cartesiano de ejes, y como deberias de saber ya, cualquier posicion en el mundo 3D se representa mediante un vector, que es un array de 3 numeros reales, cada uno haciendo referencia a cada eje (x,y,z)

Por ejemplo, el vector (5,1,-3) indica 5 unidades en el eje x positivo, 1 unidad en el eje y positivo, y 3 unidades en el eje z negativo.

Aparte de indicarnos puntos en el espacio 3D, los vectores tambien pueden indicarnos direcciones.

Esto lo hacemos imaginando que el vector sale desde el centro de una esfera (en a posicion 0,0,0 ) y que la esfera tiene como radio un valor de 1.

Todos los vectores que salgan desde el origen de esta esfera tendran como longitud 1, y si nos colocamos nosotros en el centro de la esfera, este vector nos indicara una direccion a la que mirar.

Es hora de que desenpolveis vuestros libros del "cole" y echeis una ojeada al capitulo de vectores :)

Por si no lo teneis a mano, aqui os pongo las operaciones basicas que se pueden hacer con los vectores. Estas son muy importantes porque la mayor parte del tiempo tendremos que estar sumando, multiplicando, normalizando, etc...

Restar: Restar cada elemento del vector
(7,5,9) - (1,2,3) = (6,3,6)
Suma: Sumar cada elemento del vector
(7,5,9) + (1,2,3) = (8,7,12)
Multiplicacion escalar: Multiplicar cada elemento por el escalar
2 · (1,2,3) = (2,4,6)
Producto: Suma de los elementos de la multiplicacion
(7,5,9) < (1,2,3) = 7·1 + 5·2 + 9·3 = 44
Producto Vectorial: (a,b,c) x (d,e,f) = (b·f-e·c, c·d-a·f, a·e-d·b)
(7,5,9) x (1,2,3) = (-3,12,9)
Magnitud o Distancia desde el origen: mag(v)=sqrt(v<v)
mag(1,2,3) = sqrt(1·1 + 2·2 + 3·3) = sqrt(14) = 3.741657386774
Normalizar un vector o hacerlo de magnitud 0: (1/mag(v))*v
-
Direccion desde A a B: Normalizar(B-A)
-

A veces querremos realizar varias operaciones juntas en los vectors, para ello utilizaremos nuestras queridas matrices.

Las matrices que mas usaras son la de Rotar, Trasladar (mover), y Escalar un vector. Estas matrices tienen unas dimensiones de 4x4 y trabajan con vectores del tipo (x,y,z,1). Porque cuatro dimensiones? Porque estas matrices son las ideales para realizar todos esos calculos a la vez.

Aplicar una de estas operaciones sobre el vector, basta con multiplicar el vector con la matriz. Tambien puedes multiplicar el vector por una serie de matrices para obtener el resultado de distintas operaciones. O tambien puedes multiplicar las matrices entre si, y despues multiplicar el vector con el resultlado anterior, asi aplicas todas las operaciones al mismo tiempo. Pero tendras que tener en cuenta el orden de multiplicacion, ya que cuando trabajamos con matrices no es lo mismo multiplicar (a x b) que (b x a)

En el fichero math.3d de tu DirectX SDK (C:\MSSDK) puedes encontrar clases que implementan vectores 3D (Vector3D) y matrices (Matrix3D). Tambien estan definidas las operaciones y funciones necesarias para operar con ellas.

>>Click para siguiente capitulo Leyes de Newton>>

Hosted by www.Geocities.ws

1