Würfelecke



  • Hi! Ich habe ein Problem.
    Ich habe mir etwas gebastelt, dass ich einen Würfel habe, den ich hoch, runter, nach links und nach rechts mit den pfeiltasten bewegen kann. Die richtung wird mit direction abgefragt und dementsprechend werden die variablen geändert. Am anfang wird der würfel richtig angezeigt, doch wenn ich ihn nach links oder nach rechts bewege, bewegt sich der erste punkt immer nach oben, wieso?

    if(direction==1) {
            for(int i=0;i<25;i++) {
                o[i]-=0.02f;
            }
        } else if(direction==2) {
            for(int i=0;i<25;i++) {
                o[i]+=0.02f;
            }
        } else if(direction==3) {
            for(int i=0;i<25;i++) {
                p[i]+=0.02f;
            }
        } else if(direction==4) {
            for(int i=0;i<25;i++) {
                p[i]-=0.02f;
            }
        }
    
        glBegin(GL_QUADS);
            glColor3f(1.0f,0.0f,0.0f);
            glVertex3f( o[0], p[0],-1.0f); //erster punkt
            glVertex3f( o[1], p[1],-1.0f);
            glVertex3f( o[2], p[2], 1.0f);
            glVertex3f( o[3], p[3], 1.0f);
            glColor3f(0.0f,1.0f,0.0f); 
            glVertex3f( o[4], p[4], 1.0f);
            glVertex3f( o[5], p[5], 1.0f);
            glVertex3f( o[6], p[6],-1.0f);
            glVertex3f( o[7], p[7],-1.0f);
            glColor3f(0.0f,0.0f,1.0f); 
            glVertex3f( o[8], p[8], 1.0f);
            glVertex3f( o[9], p[9], 1.0f);
            glVertex3f( o[10], p[10], 1.0f);
            glVertex3f( o[11], p[11], 1.0f);
            glColor3f( 1.0f,1.0f,1.0f);
            glVertex3f( o[12], p[12],-1.0f);
            glVertex3f( o[13], p[13],-1.0f);
            glVertex3f( o[14], p[14],-1.0f);
            glVertex3f( o[15], p[15],-1.0f);
            glColor3f(1.0f,1.0f,0.0f);
            glVertex3f( o[16], p[16], 1.0f);
            glVertex3f( o[17], p[17],-1.0f);
            glVertex3f( o[18], p[18],-1.0f);
            glVertex3f( o[19], p[19], 1.0f);
            glColor3f(1.0f,0.0f,0.5f);
            glVertex3f( o[20], p[20],-1.0f);
            glVertex3f( o[21], p[21], 1.0f);
            glVertex3f( o[22], p[22], 1.0f);
            glVertex3f( o[23], p[23],-1.0f);
        glEnd();
    


  • wiso machst du das nicht mit glTranslate?

    geht doch viel einfacher!

    Syntax: glTranslate{fd}(x_pos, y_pos, z_pos);
    Beispiel: glTranslatef(0.0,0.0,-2.0);
    Verschiebt das Objekt weiter weg.

    [ Dieser Beitrag wurde am 22.02.2003 um 14:09 Uhr von Niels editiert. ]



  • aber dann bewege ich ja nicht den würfel. das könnte später vielleciht für schwierigkeiten sorgen, wenn daraus noch was anderes werden soll...



  • Original erstellt von <FlorianLabu>:
    aber dann bewege ich ja nicht den würfel. das könnte später vielleciht für schwierigkeiten sorgen, wenn daraus noch was anderes werden soll...

    dann mach das mal so:

    glPushMatrix();
      glTranslatef(x,y,z);
      glBegin();
         // dein würfel
      glEnd();
    glPopMatrix();
    

    so wirkt sich das glTranslate nur auf deinen Würfel aus und die Umgebung bleibt die selbe.


Anmelden zum Antworten