Programação JOGL

Senhores, boa noite.

Estou tentando elaborar um trabalho de faculdade de programação 3D em JOGL cujo objetivo é fazer com que uma esfera se movimente dentro de um cubo num eixo X do plano cartesiano, de forma que a esfera toque as paredes do cubo. Consegui construir tais figuras mas consigo fazer movimentar a esfera apenas para um lado.

Gostaria que me ajudassem a fazer com que a esfera fique se movendo de um lado para outro constantemente. Segue o código a baixo do método display:

public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();

// Clear the drawing area
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Reset the current matrix to the “identity”
gl.glLoadIdentity();

// Move the “drawing cursor” around
gl.glTranslatef(0.0f, 0.0f, -6.0f);

h2 = (float)a/(float)b;

gl.glPopMatrix();

gl.glViewport(0, 0, a, b);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h2, 0.5, 500.0);
//gl.glOrtho(-65.0, 65.0, -65, 65, -400, 400);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();

glu.gluLookAt(10, 10, 100, 0, 0, 0, 0, 2, 0);
gl.glColor3f(1.0f, 1.0f, 1.0f);

// gl.glTranslatef(cx, 0.0f, -6.0f); //translate do cubo
glut.glutWireCube(50);
cx+=25;

gl.glTranslatef(tr_cilind, 0.0f, -6.0f);
glut.glutWireCylinder(2, 2, 100, 5);

if (tr_cilind<25) {
d=1;
}
if(tr_cilind>-30){
d=0;
}
if(d==1){
tr_cilind++;
}
if(d==0){
tr_cilind–;

}
}

Agradeço antecipadamente,

Lucio Nunes

Dê uma olhada na wiki dela

http://jogamp.org/wiki/index.php/Jogl_Tutorial

pelamordedeus, coloue os codigos entre as tags [code]

uma coisa estranha, vc chama glPopMatrix, mas nao vejo nenhum glPushMatrix, a ñ ser q vc faça isso em outro lugar vai ser gerarado um erro, o GL_STACK_UNDERFLOW
o trecho onde vc ajusta a perspectiva e o ponto de vista ñ precisa ficar nessa função, vc pq ajusa uma vez só ela é estatica, vc faz um vez só, o q se move depois é a camera

sua esfera ñ se move em outros eixos pq o seu glTranslate antes de glutWireCylinder só possui um paramtro que muda, q é o ‘tr_cilind’, os outros dois valores que estão nos eixos y e z são constantes, a única coisa q vc precisa fazer é colocar uma variavel pra cada eixo, e mudar todas elas, assim como vc muda a q está no eixo x.

flw, t+