Introduccion a la teoria de graficos en 3D (Vectores)
Conocer la teoria que esta detras de opengl o cualquier libreria grafica no es necesaria para el uso de estas, pero si uno se quiere dedicar a esto bien, deberia conocerlas.
Un vector es un elemento que define una direccion y una magnitud.
Se representa por: V = < x, y, z >
.
.
Magnitud:
| V | = sqrt (x*x + y*y + z*z) -> sqrt: raiz cuadrada
.
.
Formar Vector de un punto a otro
Si queremos formar el vector V12 enttre dos puntos P1, y P2
V12 = cabeza – cola = P2 – P1 = < P2.x – P1.x , P2.y – P1.y , P2.z – P2.z>
Siendo V12, el vector q ue va de P1 a P2.
.
.
Normalizacion
Cuando se normaliza un vector se reduce su magnitud a 1.
Sea V un vector no normalizado, su forma normalizada es:
V = V / | V | = < x / | V | , y / | V | , z / | V | > → vector / magnitud
.
.
Operaciones basicas con vectores:
.
Suma de vectores (Adicion)
Sea V1 = < x1, y1, z1 > y V2 = < x2, y2, z2 > dos vectores:
V1 + V2 = < x1 + x2 , y1 + y2 , z1 + z2 >
.
.
Multiplicacion y division de un escalar con un vector
Sea w un escalar y V un vector:
.
w*V = < x*w , y*w, z*w >
.
V / w = < x/w, y/w, z/w >
.
.
Producto punto (inner product)
Sea V1 = y V2 = dos vectores, el producto punto entre V1 y V2 se representa por:
.
V1 . V2 = x1*x2 + y1*y2 + z1*z2
Otra manera de encontrarlo, siendo O el angulo entre V1 y V2:
.
V1 . V2 = | V1 | * | V2 | * cos ( O )
.
Notemos que si V1 y V2 estan normalizados entonces la | V1 | * | V2 | = 1, entonces podemos simplificar para este caso en:
.
V1 . V2 = cos ( O )
.
.
Cosas para tener en cuenta, importantes para los graficos en 3D:
-
V1 . V2 = 0 → si O es 90 grados
-
V1 . V2 > 0 → si O es menor a 90 grados
-
V1 . V2 < 0 → si O es mayor a 90 grados
-
V1 . V2 = | V1 | ^ 2 = | V2 | ^ 2 → si V1 y V2 son iguales
Nota: El producto punto da como resultado un escalar.
.
.
Producto Crus (cross product)
.
Usado muy frecuentemente en temas como detecciones de colision, iluminacion y fisica.
Sea V1 = y V2 = dos vectores, O el angulo entre ellos y N un vector perpendicular a V1 y a V2:
.
V1 x V2 = | V1 | * | V2 | * seno ( O ) * N
.
ò
.
V1 x V2 = | i j k |
| |
| x1 y1 z1 |
| |
| x2 y2 z2 |
| |
.
= i ( y1*z2 – z1*y2) – j (z1*x2 – x1*z2) + k ( x1*y2 – y1*x2 )
.
= < y1*z2 – z1*y2 , z1*x2 – x1*z2 , x1*y2 – y1*x2 >
.
Nota : El producto cruz da como resultado un Vector perperdicular (normal) a los dos vectores
.
.
Para saber su direccion se aplica la ley de la mano derecha:
Tenemos el vector V1, y V2, ahora queremos saber en que direccion sale el vector resultante del producto cruz: V1xV2
Ponemos la mano abiera en direccion del vector V1 y cerramos los dedos en direccion del otro vector.
Hacia donde queda apuntando el dedo pulgar (gordo) sera la direccion del vector resultante.
.
.
Bibliografia:
- OpenGL game programming, primma tech editorial
Conocer la teoria que esta detras de opengl o cualquier libreria grafica no es necesaria para el uso de estas, pero si uno se quiere dedicar a esto bien, deberia conocerlas.
. Vectores
Un vector es un elemento que define una direccion y una magnitud.
Se representa por: V = < x, y, z >
Magnitud: | V | = sqrt (x*x + y*y + z*z) -> sqrt: raiz cuadrada
Formar Vector de un punto a otro
Si queremos formar el vector V12 enttre dos puntos P1, y P2
V12 = cabeza – cola = P2 – P1 = < P2.x – P1.x , P2.y – P1.y , P2.z – P2.z>
Siendo V12, el vector que va de P1 a P2.
Normalizacion
Cuando se normaliza un vector se reduce su magnitud a 1.
Sea V un vector no normalizado, su forma normalizada es:
V = V / | V | = < x / | V | , y / | V | , z / | V | > → vector / magnitud
Operaciones basicas con vectores:
Suma de vectores (Adicion)
Sea V1 = < x1, y1, z1 > y V2 = < x2, y2, z2 > dos vectores:
V1 + V2 = < x1 + x2 , y1 + y2 , z1 + z2 >
Multiplicacion y division de un escalar con un vector
Sea w un escalar y V un vector:
w*V =
V / w =
Producto punto (inner product)
Sea V1 = y V2 = dos vectores, el producto punto entre V1 y V2 se representa por:
V1 . V2 = x1*x2 + y1*y2 + z1*z2
Nota: El producto punto da como resultado un escalar.
Otra manera de encontrarlo, siendo O el angulo entre V1 y V2:
V1 . V2 = | V1 | * | V2 | * cos ( O )
Notemos que si V1 y V2 estan normalizados entonces la | V1 | * | V2 | = 1, entonces podemos simplificar para este caso en:
V1 . V2 = cos ( O )
Cosas para tener en cuenta, importantes para los graficos en 3D:
-
V1 . V2 = 0 → si O es 90 grados
-
V1 . V2 > 0 → si O es menor a 90 grados
-
V1 . V2 < 0 → si O es mayor a 90 grados
-
V1 . V2 = | V1 | ^ 2 = | V2 | ^ 2 → si V1 y V2 son iguales
Producto Crus (cross product)
Usado muy frecuentemente en temas como detecciones de colision, iluminacion y fisica.
Sea V1 = y V2 = dos vectores, O el angulo entre ellos y N un vector perpendicular a V1 y a V2:
V1 x V2 = | V1 | * | V2 | * seno ( O ) * N
ò
V1 x V2 = | i j k |
| |
| x1 y1 z1 |
| |
| x2 y2 z2 |
| |
= i ( y1*z2 – z1*y2) – j (z1*x2 – x1*z2) + k ( x1*y2 – y1*x2 )
= < y1*z2 – z1*y2 , z1*x2 – x1*z2 , x1*y2 – y1*x2 >
Nota : El producto cruz da como resultado un Vector perperdicular (normal) a los dos vectores
Tags: Matematica, Teoria de graficos
I have already seen it somethere…
Thank you
Elcorin
This post may help anyone
Daniel
BUEN COMIENZO
hello,
thanks for the great quality of your blog, each time i come here, i’m amazed.
black hattitude.
Muchas gracias
So much thanks
Excellent article, I will take note. Many thanks for the story!
Muchas gracias
I am the first time on this site and am really enthusiastic about and so many good articles. I think it’s just very good.
Always yours Mr. Cialis