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: ,
This entry was posted on Friday, August 28th, 2009 at 1:31 pm and is filed under Computacion Grafica, Teoria. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

9 Responses to “Introduccion a la teoria de graficos en 3D (Vectores)”

  1. Elcorin

    I have already seen it somethere…
    Thank you
    Elcorin

  2. Daniel Gomez Rico

    This post may help anyone :)
    Daniel

  3. online-maris

    BUEN COMIENZO

  4. black hattitude

    hello,

    thanks for the great quality of your blog, each time i come here, i’m amazed.

    black hattitude.

  5. Daniel Gomez Rico

    Muchas gracias :)

  6. Daniel Gomez Rico

    So much thanks :)

  7. Cialis

    Excellent article, I will take note. Many thanks for the story!

  8. Eric

    Muchas gracias :)

  9. cialis generic purchase

    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

Leave a Reply

Your comment