how to collisions 2 objects in 3D

hi nerds, i have a questions :?

//**************************************************TESTAPP.CPP
void testApp::setup()
{
iMax = 0;
//ofSetFrameRate(iFlag);
//ofHideCursor();
for(int i=0; i<2; i++)
{
cubo[i].setup();
cubo[i].anguloCuboX = ofRandom(0, 360);
cubo[i].anguloCuboY = ofRandom(0, 360);
}
}

void testApp::draw()
{
iMax +=1;
cubo[0].update(iMax, 250);
if(iMax==1000)iMax=0;
cubo[0].draw(20);
cubo[1].update(ofGetWidth()/2, 250);
cubo[1].draw(40);
ofSleepMillis(10);
}

void testApp::keyPressed(int key)
{
switch (key)
{
case OF_KEY_RIGHT:
//Plano.anguloPlanoY+=5;
cubo[0].anguloCuboY+=10;
break;

case OF_KEY_LEFT:
.
.
.
}
}
//********************************************TESTAPP.H
ClassCube cubo[1];

//++++++++++++++++++++class file attached

//********************************************CLASS CUBE (CPP)
void ClassCube::setup()
{
glEnable(GL_DEPTH_TEST);
iMediaArista = 0;
anguloCuboX = 0;
anguloCuboY = 0;
}

void ClassCube::update(int x, int y)
{
glTranslated(x, y, 0.0f);
glRotatef(anguloCuboX, 1.0f, 0.0f, 0.0f);
glRotatef(anguloCuboY, 0.0f, 1.0f, 0.0f);
//draw(iMediaArista);
}
void ClassCube::draw(int iArista)
{
iMediaArista = (iArista)/2;
glPushMatrix();
glColor3f(0, 160, 0);
glBegin(GL_QUADS); //cara frontal
glVertex3f(-iMediaArista,-iMediaArista, iMediaArista);
glVertex3f(+iMediaArista,-iMediaArista, iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, iMediaArista);
glVertex3f(-iMediaArista,+iMediaArista, iMediaArista);
glEnd();

glColor3f(0, 160, 0);
glBegin(GL_QUADS); //cara trasera
glVertex3f(+iMediaArista,-iMediaArista, -iMediaArista);
glVertex3f(-iMediaArista,-iMediaArista, -iMediaArista);
glVertex3f(-iMediaArista,+iMediaArista, -iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, -iMediaArista);
glEnd();

glColor3f(255, 255, 0);
glBegin(GL_QUADS); //cara lateral izq
glVertex3f(-iMediaArista,-iMediaArista, -iMediaArista);
glVertex3f(-iMediaArista,-iMediaArista, iMediaArista);
glVertex3f(-iMediaArista,+iMediaArista, iMediaArista);
glVertex3f(-iMediaArista,+iMediaArista, -iMediaArista);
glEnd();

glColor3f(255, 255, 0);
glBegin(GL_QUADS); //cara lateral dcha
glVertex3f(+iMediaArista,-iMediaArista, iMediaArista);
glVertex3f(+iMediaArista,-iMediaArista, -iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, -iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, iMediaArista);
glEnd();

glColor3f(0, 0, 100);
glBegin(GL_QUADS); //cara abajo
glVertex3f(+iMediaArista,-iMediaArista, -iMediaArista);
glVertex3f(+iMediaArista,-iMediaArista,iMediaArista);
glVertex3f(-iMediaArista,-iMediaArista, iMediaArista);
glVertex3f(-iMediaArista,-iMediaArista, -iMediaArista);
glEnd();

glColor3f(0, 0, 100);
glBegin(GL_QUADS); //cara arriba
glVertex3f(-iMediaArista,+iMediaArista, iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, iMediaArista);
glVertex3f(+iMediaArista,+iMediaArista, -iMediaArista);
glVertex3f(-iMediaArista, +iMediaArista, -iMediaArista);
glEnd();

ofPopMatrix();
}