Ich habe einige Probleme mit glRotateF. Das Problem ist folgendes:glRotatef unterstützt die zentrale Position
Ich zeichne 3 Linien, die ein kartesisches Koordinatensystem darstellen, sie repräsentieren den Blickwinkel einer Kamera.
Diese Kamera kann ihren Blickwinkel drehen. Wenn es sich dreht, sendet es eine Nachricht mit den Winkeln und der Achse, die sich gedreht hatten.
Meine app bekommt diese Nachricht und sendet sie ein Verfahren, diese Methode wird die Achse, die den Winkel gedreht und und wurde sendet sie an dieser Methode:
Bisher alles funktioniert, ist das Problem danach beginnt.
Wenn ich eine Nachricht sende, um den Winkel X in jedem beliebigen Winkel und Winkel Z in einem beliebigen Winkel zu drehen, dreht er einfach die z-Achse.
Im Debugging habe ich festgestellt, dass zuerst der X-Winkel in dem gegebenen Winkel gedreht wurde, aber wenn er das Z im Winkel dreht, kehrt er zur ursprünglichen Position zurück und dreht dann Z, wobei die X-Drehung verloren geht. wie in diesem Beispiel:
Ausgangsposition:
drehen X auf 90º:
drehen Z auf 90º (Was sein sollte):
drehen Z auf 90º (was wirklich passiert):
Was ich will, ist drehen x und dann z ohne lose x Rotation.
Dies ist, wie ich eine Achse zu drehen, rufen:
openGl.rotateX((float) x);
openGl.rotateZ((float) z);
Verfahren rotateX und rotateZ
public void rotateX(float grau) {
mCubeRotation = grau;
eixoX = 1.0f;
eixoY = 0.0f;
eixoZ = 0.0f;
surfaceView.requestRender(); // line to call onDrawFrame
}
public void rotateZ(float grau) {
mCubeRotation = grau;
eixoX = 0.0f;
eixoY = 0.0f;
eixoZ = 1.0f;
surfaceView.requestRender(); // line to call onDrawFrame
}
Dies ist der Code der Drehung ist:
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -8.0f);
// When i rotate x eixoX equal 1 and the other axis is 0.
// When i rotate z eixoZ equal 1 and the other axis is 0.
gl.glRotatef(mCubeRotation, eixoX, eixoY, eixoZ);
mCube.draw(gl);
gl.glLoadIdentity();
lock = false;
}
, wenn jemand Hilfe Ich werde es zu schätzen wissen.