Gå til innhold

lite problem med jog,opengl java


Anbefalte innlegg

hei, jobber med en oppgave hvor jeg skal lage solsytemet i java, og bruker jogl og opengl. problemet ligger i hvordan jeg skal få plantetene til å rotere rundt solen i forskjellige hastigheter, koden for hvordan jeg gjør det med bare sol,jorden og månen er:

	gl.glPushMatrix();
gl.glTranslatef(0.0f,0.0f,-15.0f);
gl.glMultMatrixd(mViewRotation.getData());
gl.glRotatef(rot,0.0f,0.0f,1.0f);
gl.glColor3f(1,1,0);
       mSun.draw(drawable);
gl.glTranslatef(5.0f,0.0f,0.0f);
gl.glRotatef(rot2,0.0f,0.0f,1.0f);
gl.glColor3f(0,0,1);
       earth.draw(drawable);
gl.glTranslatef(1.0f,0.0f,0.0f);
gl.glColor3f(1,1,1);
moon.draw(drawable);
gl.glPopMatrix();
   }

 

men dette er på en måte en snarvei siden, jeg bruker solen til å rotere jorden og jorden til å rotere månen. men ettersom flere planeter skal inn i bildet nå lurer jeg på hvordan dette gjøres. har prøvd å få planetene til å rottere rundt et fikst punkt, dvs solen siden den er i sentrum, men dette gjør at planetene rotere feil etterhvert. måten jeg gjorde dette på var:

glTranslatef(1.0, 2.0, 3.0);
glRotatef(30.0, 0.0, 0.0, 1.0);
glTranslatef(-1.0, -2.0, -3.0);

 

noen tips der ute? :)

Lenke til kommentar
Videoannonse
Annonse

Dette burde vel funke:

	
gl.glPushMatrix();
gl.glRotatef(rot1,0.0f,0.0f,1.0f);
gl.glTranslatef(0.0f,0.0f,0.0f);
mSun.draw(drawable);
gl.glPopMatrix();

gl.glPushMatrix();
gl.glRotatef(rot2,0.0f,0.0f,1.0f);
gl.glTranslatef(2.0f,0.0f,0.0f);
earth.draw(drawable);
gl.glPopMatrix();

gl.glPushMatrix();
gl.glRotatef(rot3,0.0f,0.0f,1.0f);
gl.glTranslatef(4.0f,0.0f,0.0f);
moon.draw(drawable);
gl.glPopMatrix();

...etc...

 

hvor rot1, rot2, og rot3 er rotasjonen til de forskjellige planetene.

 

Du må passe på rekkefølgen av glRotate og glTranslate.

 

Og for å rotere planeten rundt sin egen akse:

gl.glPushMatrix();
gl.glRotatef(rot3,0.0f,0.0f,1.0f);
gl.glTranslatef(4.0f,0.0f,0.0f);
gl.glRotatef(<PLANET ROTASJON>,0.0f,1.0f,0.0f);
moon.draw(drawable);
gl.glPopMatrix();

Endret av krigun
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...