pydi Skrevet 8. februar 2007 Skrevet 8. februar 2007 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?
krigun Skrevet 8. februar 2007 Skrevet 8. februar 2007 (endret) 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 8. februar 2007 av krigun
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå