Está en la página 1de 4

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera

Computacin Grafica

Tarea No 1: Algoritmo para dibujar Elipsoide

Profesor: Ing. Genaro Garrido Lazcano Grupo: 01

Alumna: Martnez Saldivar Miriam

SEMESTRE 2013-1

24-10-2012

Modelado Geomtrico
Algoritmo para dibujar elipsoide Computacin Grfica

Algoritmo para dibujar Elipsoide


Una superficie elipsoide se puede describir como una extensin de una superficie esfrica donde los radios en tres direcciones mutuamente perpendiculares pueden tener diferentes valores. La representacin cartesiana para los puntos sobre la superficie de un elipsoide que se centra en el origen es:

Y una representacin paramtrica ara la elipsoide en trminos del ngulo de latitud () y el ngulo de longitud en la figura es:

Modelado Geomtrico
Algoritmo para dibujar elipsoide Computacin Grfica Se obtiene cuando los coeficientes de los tres trminos cuadrticos presenten igual signo pero valores diferentes. Es importante sealar que adems de esta condicin se hace necesario el estudio del trmino independiente que se realiza despejndolo. Si el trmino independiente es nulo entonces la ecuacin representara un punto en el espacio, en cambio si este es diferente de cero se debe observar que una vez despejado presente el mismo signo que los trminos cuadrticos ya que en caso contrario la ecuacin no representara lugar geomtrico alguno.

//FUNCIN //1) Parmetros de entrada ngulo de latitud () y el ngulo de longitud , radio1, radio2, paralelos y meridianos void elipse(float radio, float radio2,int paralelos, int meridianos, int modoRender) { float ang1, ang2, s1, s2, t1, t2; float a[3], b[3], c[3], d[3]; float delta1, delta2, deltas, deltat; delta1=180.0f/paralelos; delta2=360.0f/meridianos; //2)Clculo de vrtices //Semielipse superior (y positivos) for(int i=0; i < paralelos/2; i++) { for(int j=0; j <= meridianos; j++) { ang1=i*delta1; ang2=j*delta2; a[0]=radio*(float)cos(ang1*PI/180.0f)*(float)cos(ang2*PI/180.0f); a[1]=radio*(float)sin(ang1*PI/180.0f); a[2]=radio2*(float)cos(ang1*PI/180.0f)*(float)sin(ang2*PI/180.0f); ang1=(i+1)*delta1; ang2=j*delta2; b[0]=radio*(float)cos(ang1*PI/180.0f)*(float)cos(ang2*PI/180.0f); b[1]=radio*(float)sin(ang1*PI/180.0f);

Modelado Geomtrico
Algoritmo para dibujar elipsoide Computacin Grfica

b[2]=radio2*(float)cos(ang1*PI/180.0f)*(float)sin(ang2*PI/180.0f); ang1=(i+1)*delta1; ang2=(j+1)*delta2; c[0]=radio*(float)cos(ang1*PI/180.0f)*(float)cos(ang2*PI/180.0f); c[1]=radio*(float)sin(ang1*PI/180.0f); c[2]=radio2*(float)cos(ang1*PI/180.0f)*(float)sin(ang2*PI/180.0f); ang1=i*delta1; ang2=(j+1)*delta2; d[0]=radio*(float)cos(ang1*PI/180.0f)*(float)cos(ang2*PI/180.0f); d[1]=radio*(float)sin(ang1*PI/180.0f); d[2]=radio2*(float)cos(ang1*PI/180.0f)*(float)sin(ang2*PI/180.0f); glColor3f(1.0f,1.0f,1.0f); if(modoRender == 1) glBegin(GL_QUADS);// slido else if(modoRender == 2) glBegin(GL_LINE_LOOP); // 2) Reglas de conectividad: alambrado glVertex3f(a[0], glVertex3f(d[0], glVertex3f(c[0], glVertex3f(b[0], glEnd(); } } } a[1], d[1], c[1], b[1], a[2]); d[2]); c[2]); b[2]);

También podría gustarte