Vous êtes sur la page 1sur 8

Betanzo Vásquez Erick Manuel.

Tarea # 1.

Computación Gráfica.

Ejemplos matemáticos:

Sean los vectores a = (4, -2, 3) y b = (3, 2, 1), y sean las operaciones siguientes:

Producto punto

a ib = ( 4, −2,3)i( 3, 2,1) = ( 4 ⋅ 3) + ( −2 ⋅ 2 ) + ( 3 ⋅1)


a ib = 12 + (−4) + 3 = 11

Producto cruz

i j k
a × b = 4 −2 3 = −8i + 5 j + 14k = (−8,5,14)
3 2 1

Proyección de un vector sobre otro

a ib  b  ( 4, −2,3)i( 3, 2,1)  ( 3, 2,1) 


Comp vect b a =  =  2 
b b  3 2
+ 2 2
+ 12
 3 + 2 2
+ 12

 

11  ( 3, 2,1)  ( 33, 22,11)


Comp vect b a =  =
14  14  14

La proyección escalar del vector a sobre el vector b corresponde al valor de

11
14

mientras que la proyección vectorial es:

( 33, 22,11)
14
Líneas y rayos

Para determinar una ecuación de una recta se necesitan como datos las coordenadas de un
punto de ella, o el vector de posición de dicho punto; y un vector que indique la
dirección de la recta, que se conoce como vector director.

Pertenencia y Distancia de Punto a Recta y Plano

La distancia entre dos objetos es la menor de entre las distancias de sus puntos. De un punto a un
plano o a una recta es la distancia al pie de la perpendicular del punto al plano o recta.

En el caso de la recta, notemos que el triangulo que forma el punto P con el segmento P0-
P1 tiene altura d, que es la distancia buscada. En el caso del plano sucede lo mismo con el
volumen del tetraedro formado por el punto y el triangulo. El área del triangulo es la
mitad del área del paralelogramo que se forma con dos vectores y se calcula mediante el
producto vectorial. El volumen del tetraedro es un sexto del paralelepípedo formado con
tres vectores y se calcula mediante el triple producto escalar. La distancia se puede
calcular entonces mediante área o volumen dividido base:
Si el resultado es nulo, el punto pertenece a la recta o al plano.
La primera ecuación da un vector normal al plano definido por la recta y el punto. En la
segunda, para el plano, el signo del resultado indica de que lado del plano esta el punto.
En ambos casos, si la información extra resulta inútil, bastara con tomar el modulo.

Aplicaciones para computación gráfica en OpenGL.

Vectores

Modulo de un vector

Si x, y, z son las componentes del vector A se define como modulo a |A| = sqrt(x*x + y*y
+ z*z).
//modulo de un vector
GLfloat Modulo(GLfloat x, GLfloat y, GLfloat z)
{
GLfloat len;

len = x*x + y*y + z*z;


return ( sqrt(len));
}

Vector Normalizado

Se llama haci al vector que tiene como modulo a 1.


//Vector de mudulo 1 o Normalizado
GLvoid Normaliza(GLfloat *x, GLfloat *y, GLfloat *z)
{
GLfloat len;

len = Modulo(*x, *y, *z);


len = 1.0/len;
(*x) *= len;
(*y) *= len;
(*z) *= len;
}
Producto Escalar

Se llama producto escalar de dos vectores A, B al escalar obtenido como producto de los
modulos de A y B por el coseno del angulo formado por los dos vectores.

A.B = |A|*|B|*cos(rho)

tambien se lo puede expresar mediante sus componentes

A.B = a1*b1 + a2*b2 + a3*b3


//Producto Escalar
GLfloat ProductoEscalar(GLfloat A[], GLfloat B[])
{
return (A[0]*B[0] + A[1]*B[1] + A[2]*B[2]);
}

Producto Vectorial

Se llama producto vectorial de dos vectores A y B al vector C que tiene


el modulo igual al producro de los modulos de A y B por el seno del angulo que lo
forman, AxB = |A|*|B|*sin(rho)
la direccion perpendicular al plano determminado por las direcciones de los vectores A, B.
el sentido tal que el triedro A, B, C tenga la misma orientacion en el espacio.

Lo podemos expresar tambien por sus coponentes A(a1,a2,a3) , B(b1,b2,b3), C(c1,c2,c3).

C=AxB

c1 = a2*b3 - a3*b2

c2 = a3*b1 - a1*b3

c3 = a1*b2 - a2*b1
//Producto Vectorial
GLvoid ProductoVectorial(GLfloat A[], GLfloat B[],
GLfloat *C1,
GLfloat *C2,
GLfloat *C3)
{
*C1 = A[1]*B[2] - A[2]*B[1];
*C2 = A[2]*B[0] - A[0]*B[2];
*C3 = A[0]*B[1] - A[1]*B[0];
}

Sistemas de coordenadas Esféricas


El sistema de coordenadas Esfericas se puede definir utilizando las siguientes variables r,
rho, theta, donde rho se mide desde el eje Z y theta desde el eje X.
Las relaciones entre r, rho, theta y x, y, z son las siguientes:

x=r*sin(rho)*cos(theta)
y=r*sin(rho)*sin(theta)
z=r*cos(rho)

donde r=(x2+y2+z2)1/2.

Ejemplo en C

Ejemplo en OpenGL del uso de las coordenadas esfericas para dibujar los puntos de una
esfera de radio 1.

Codigo Fuente#include <GL/glut.h>


#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#definePI 3.141592654

void DibujarEjes(void)
{
glBegin(GL_LINES);
//eje X
glVertex3f(-1.5, 0.0, 0.0);
glVertex3f(1.5, 0.0, 0.0);
//eje Y
glVertex3f(0.0, -1.5, 0.0);
glVertex3f(0.0, 1.5, 0.0);
//eje Z
glVertex3f(0.0, 0.0, -1.5);
glVertex3f(0.0, 0.0, 1.5);
glEnd();
}

void DibujarEsfera(void)
{
float x, y, z;
float r=1.0, rho, theta;
int i, j;

glBegin(GL_POINTS);
rho=0.0;
x=(float)(r*sin(rho)*cos(theta));
y=(float)(r*sin(rho)*sin(theta));
z=(float)(r*cos(rho));
glVertex3f(x, y, z);
for (i=1; i<23; i++) {
rho=PI*i/24;
for (j=0; j<16; j++) {
theta=2*PI*j/16;
x=(float)(r*sin(rho)*cos(theta));
y=(float)(r*sin(rho)*sin(theta));
z=(float)(r*cos(rho));
glVertex3f(x, y, z);
}
}
rho=PI;
x=(float)(r*sin(rho)*cos(theta));
y=(float)(r*sin(rho)*sin(theta));
z=(float)(r*cos(rho));
glVertex3f(x, y, z);
glEnd();
}

void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
gluLookAt(2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
//ejes en verde
glColor3f (0.0, 1.0, 0.0);
DibujarEjes();
//ejes en amarillo
glColor3f (1.0, 1.0, 0.0);
DibujarEsfera();
glPopMatrix();
glFlush();
}

void reshape(int w, int h)


{
if (!h)
return;
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)


{
switch (key)
{
case 27: exit(0);
break;
}
}

int main(int argc, char **argv)


{
glutInit(&argc, argv);
glutInitWindowSize(400, 400);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("Coordenadas Esfericas");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
Bibliografía:

Castañeda de Isla Puga Eric. Geometría Analítica en el Espacio. México, UNAM,


Facultad de Ingeniería, 2000, 229 pp.

http://pgrafica.webideas4all.com/

http://www.cimec.org.ar/twiki/pub/Cimec/ComputacionGrafica/Intersecciones.doc.pdf

http://www.humbertocervantes.net/homepage/itzamna/TUTORIAL/tutorial.html

http://www.humbertocervantes.net/homepage/itzamna/TUTORIAL/tutorial.html

Vous aimerez peut-être aussi