Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - Gizbo

#1
Proyectos / Inento Crear Lo Siguiente, Ayuda Por Favor.
18 de Mayo de 2006, 06:27:44 PM
 bueno ya he arreglado el tema de la rotacion,os doy las gracias atodos los que habeis contestado.Solo una cosa mas, ¿como podria poner el nombre justo arriba de los planetas?no se si me explico.....
quiero poner justo arriba de la tierra el nombre "la tierra", justo arriba de jupiter el nombre de "jupiter", venga haber si mepodeis echar una mano...gracias.
#2
Proyectos / Inento Crear Lo Siguiente, Ayuda Por Favor.
17 de Mayo de 2006, 10:58:32 AM
 Lo que intento crear es un sistema solar en los que los planetas giren alrededor del sol.Solo he hecho el sol y dos planetas mas y ahi es donde viene mi problema, cuando hago el tercer planeta este da vueltas sobre el planeta anetrior y tambien sobre el sol(como si fuera la luna), ¿como podria hacer para que diera solo vueltas sobre el sol???
Esta realizado en visual c++ con opengl y windows.

#include

GLfloat light_diffuse [] = { 1.0, 1.0, 0.0, 1.0 };
GLfloat light_specular [] = { 1.0, 1.0, 0.0, 1.0 };
GLfloat light_emission [] = { 1.0, 1.0, 0.0, 1.0};


int winIdMain; // Identificador de la ventana principal
int winIdSub; // Identificador de la subventana

#define ANG_ROT_PEQ 1.0 // Ángulo de rotación pequeño
#define DIST_TRANS_PEQ 0.01 // Distancia de transalación pequeña
#define PASO 0.3 // Paso que se suma al tiempo

static double ang_rot_act = 0.0; // Ángulo de rotación actual
static double dist_trans_act = 0.0; // Valor de translación actual

static double spin = 0.0; // Ángulo de spin
static double paso_act = 0.0; // "Tiempo" transcurrido actual
static double mov_x = 0.0;
static double centro_grav = 0.0; // Centro de gravedad actual


void inicializa(void) {
   GLfloat light_position[] = { 0.0, 0.0, -5.0, 1.0};
   glLightfv(GL_LIGHT0, GL_POSITION, light_position);

   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
   glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);

   glEnable(GL_LIGHTING);
   glEnable(GL_LIGHT0);
   glLightfv(GL_LIGHT0, GL_EMISSION, light_emission);
}

void redimensiona(int w, int h) {
   glViewport(0,0,w,h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(60,(GLfloat)w / (GLfloat)h,1.0,20.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   gluLookAt(0.0,0.0,10.0,0.0,0.0,0.0,0.0,1.0,0.0);
}

void dibuja(void) {
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glColor3f (1.0, 1.0, 1.0);
   glPushMatrix();

   /* Dibuja el sol */
   glColor3f (1.0, 1.0, 0.0);
   glPushMatrix();
   glutSolidSphere (1.6,32,32);
   glPopMatrix();

   /* Situa la segunda esfera */
   glRotatef ((GLfloat) mov_x, 0.0, 1.0, 0.0);
   glTranslatef (2.5, 0.0, 0.0);

   /* Dibuja la segunda esfera */
   glColor3f (0.0, 0.0, 1.0);
   glutSolidSphere (0.4,32,32);

   /* Situa la tercera esfera
   glRotatef ((GLfloat) mov_x, 0.0, 1.0, 0.0);
   glTranslatef (2.5, 0.0, 0.0);

   /* Dibuja la tercera esfera*/
   glColor3f (1.0, 0.0, 0.0);
   glutSolidSphere (0.4,32,32);

   glPopMatrix();
   glutSwapBuffers();
   glFlush();

}

void idle (void) {

   /* Actualiza las variables de estado */
   mov_x += PASO;
   spin += ang_rot_act;
   centro_grav += dist_trans_act;
   if(centro_grav > 1.0) centro_grav -= 2.0;

   /* Actualiza la ventana y la subventana */
   glutSetWindow (winIdMain);
   glutPostRedisplay ();
   glutSetWindow (winIdSub);
   glutPostRedisplay ();
}

void main(int argc, char** argv) {
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize (800, 600);
   glutInitWindowPosition (0, 0);
   glutCreateWindow ("Práctica 6 de OpenGL");
   inicializa();
   glutReshapeFunc(redimensiona);
   glutDisplayFunc(dibuja);
   glutIdleFunc (idle);
   glEnable(GL_DEPTH_TEST);
   glutMainLoop();
}