Durch Maus drehbares Modell, Winkelberechnung
-
Hi,
versuche mich im Moment ein bisschen an OpenGL, Jetzt hab ich mir so ein Random-Heightmap-Erzeugungs-Irgendwas geschrieben. Jetzt wollte ich dass man das mit der Maus schön drehen kann, klappt bedingt gut und ist sicherlich nicht optimal gelöst (war gestern Nacht um 1 oder so) -//////////////User Eingaben////////////////////// bool MouseButtonPressed=false; GLfloat MouseAngleUpLeftToRightDown=0.0f; //Zum Speichern des Kipp-Winkels nach rechts unten GLfloat MouseAngleDownLeftToRightUp=0.0f; //Zum Speichern des Kipp-Winkels nach links unten GLfloat MouseAngleUpToDown=0.0f; //Speichern des Drehwinkels GLfloat MouseAngleLeftToRight=0.0f; //Zum Speichern des Kipp-Winkels nach vorne GLfloat MouseAngleSpeed=0.3f; //"Winkelgeschwindigkeit" int MouseX,MouseY,MouseOldX,MouseOldY; // Maus Koordinaten /////////////////////// Draw Fkt. ////////////////////////////// //Maus Winkel von Links Unten nach Rechts Oben glRotatef(MouseAngleDownLeftToRightUp,1.0f,0.0f,1.0f); //Maus Winkel von Links Oben nach Rechts Unten glRotatef(MouseAngleUpLeftToRightDown,1.0f,0.0f,-1.0f); //Maus Winkel von Unten nach Oben glRotatef(MouseAngleUpToDown,0.0f,1.0f,0.0f); //Maus Winkel von Links nach Rechts glRotatef(MouseAngleLeftToRight,1.0f,0.0f,0.0f); if(MouseButtonPressed) { //Maus bewegt sich nach Oben if(MouseX==MouseOldX && MouseY>MouseOldY) { MouseAngleLeftToRight+=MouseAngleSpeed; } //Maus bewegt sich nach Unten else if(MouseX==MouseOldX && MouseY<MouseOldY) { MouseAngleLeftToRight-=MouseAngleSpeed; } //Maus bewegt sich nach Rechts else if(MouseX>MouseOldX && MouseY==MouseOldY) { MouseAngleUpToDown+=MouseAngleSpeed; } //Maus bewegt sich nach Links else if(MouseX<MouseOldX && MouseY==MouseOldY) { MouseAngleUpToDown-=MouseAngleSpeed; } //Maus bewegt sich nach Rechts Oben else if(MouseX>MouseOldX && MouseY>MouseOldY) { MouseAngleUpLeftToRightDown+=MouseAngleSpeed; } //Maus bewegt sich nach Links Oben else if(MouseX<MouseOldX && MouseY>MouseOldY) { MouseAngleDownLeftToRightUp+=MouseAngleSpeed; } //Maus bewegt sich nach Links Unten else if(MouseX<MouseOldX && MouseY<MouseOldY) { MouseAngleUpLeftToRightDown-=MouseAngleSpeed; } //Maus bewegt sich nach Rechts Unten else if(MouseX>MouseOldX && MouseY<MouseOldY) { MouseAngleDownLeftToRightUp-=MouseAngleSpeed; } }EDIT: Meine Frage fehlt ja noch
Wie löst man das richtig, ohne 4 Rotates in unterschiedliche Richtungen, hab mal irgendwas von so Kugel-Trackball-Zeug gehört aber kA wie das richtig heisst, bzw. geht.
-
Hat keiner ein Stichwort für mich?
-
guckst du hier.