H
Hi!
Habe wieder ausprobiert. ich bin jetzt nochmal einen anderen weg gegangen. Mein Problem ist im Moment, dass ich falsch rotiere. Ich rotiere per Mouse-Bewegung und da ich ja nur 2 Ebenen habe, bleibt eine Achse immer aus. Wenn ich jetzt zum Beispiel um x und um y jeweils 90 Grad drehe, müsste die Z-Achse nach oben "zeigen" und die X Achse nach Rechts. drehe ich nun die Mouse nach links oder rechts, sollte sich das Objekt um z drehen, tut es aber nicht. Es dreht um y, also falsch. Hier der Quellcode:
if(mbRotation)
{
glPushMatrix();
glTranslatef(0, 0,-(2*dimz+(keyz/pfa)));
glGetFloatv(GL_MODELVIEW_MATRIX, _m1);
glTranslatef(xslide, yslide, 0);
glScalef(scalediv, scalediv, scalediv);
glPointSize(pointsz); //Punktdicke
glLoadIdentity();
glRotatef(angle_x, 1, 0, 0);
glRotatef(angle_y, 0, 1, 0);
//ModelTransform();
mbRotation = false;
// Apply the current transforms
glMultMatrixf( _m1 );
// And keep the modified transform matrix
glGetFloatv( GL_MODELVIEW_MATRIX, _m1 );
glPopMatrix();
}
// Now apply the accumulated rotations
glMultMatrixf( _m1 );
DrawScene();
CrissCross(dimmax, yzoom/sdiv);
glFlush();
SwapBuffers(hDC);
readyToDraw = true;
Ich denke, ich muss den Weg mit den Matrizen nehmen, leider klappt es auch so nicht wirklich. Er rotiert immer noch falsch (warum?).