# 3D Koordinatensystem==> JOGL



## Ya-Sin (14. Apr 2010)

ich hab das problem, das ich in ein fenster 2 koordinatensysteme einbauen möchte, wobei das eine gedreht werden soll und das eine fest bleiben soll. da ich das eine koordinatensystem mit ner methode rotieren lasse, geht das andere auch mit...

displayklasse:

```
gl.glRotatef(zahl1, 1.0f, 0.0f, 0.0f);
gl.glRotatef(zahl2, 0.0f, 1.0f, 0.0f);
gl.glRotatef(zahl3, 0.0f, 0.0f, 1.0f );
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

for(int i = 0; i < 6; i++) {

gl.glPushMatrix();
gl.glColor3f(1.0f, 1.0f, 1.0f);

glut.glutWireCube(0.8f);

gl.glColor3f(1.0f, 0.5f, 0.0f);

if (i < 4) {gl.glRotatef(i * 90.0f, 0.0f, 1.0f, 0.0f);}
if (i == 4) {gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);}
if (i == 5) {gl.glRotatef(90.0f,-1.0f, 0.0f, 0.0f);}
gl.glTranslatef(0.0f, 0.0f, 1.5f);
gl.glBegin(GL.GL_LINES); {
gl.glVertex3f( 0.0f, 0.0f, 0.0f);
gl.glVertex3f( 0.0f, 0.0f,-1.5f);}
gl.glEnd();
glut.glutWireCone(0.05f, 0.25f, 10, 5);
gl.glRasterPos3f(-0.1f, 0.1f, 0.4f);


switch (i) {
case 0: drawText("Z"); break;
case 1: drawText("X"); break;
//case 2: drawText("-Z"); break;
//case 3: drawText("-X"); break;
//case 4: drawText("-Y"); break;
case 5: drawText("Y"); break;
}
gl.glPopMatrix();
}
```

Das ist mein koordinatensystem... da soll noch ein festes dazukommen, welches sich nicht dreht...:rtfm:


----------



## Ya-Sin (14. Apr 2010)

duch gl.glRotatef() bleibt die veränderung bestehen, deswegen verschiebt es sich mit, habe irgendwie keine lösung gefunden


----------



## Marco13 (14. Apr 2010)

Das, was nicht gerdreht werden soll, muss (im einfachsten Fall, ganz allgemein) "nur" außerhalb der Codeblockes

```
glPushMatrix();
...
glPopMatrix();
```
gemacht werden...:bahnhof:


----------



## Ya-Sin (15. Apr 2010)

also irgendwie sieht es dann nicht so aus wie ich es haben möchte... mit dem rotieren bekomme ich hin, dann is das andere nicht fest... und wenn ich das eine fest bekomme, dann rotiert das andere falsch


----------



## Marco13 (15. Apr 2010)

"Nicht so, wie ich es haben möchte" und "falsch" sind keine Dinge, zu denen man präzise Antworten geben könnte...


----------



## Ya-Sin (18. Apr 2010)

Marco13 hat gesagt.:


> "Nicht so, wie ich es haben möchte" und "falsch" sind keine Dinge, zu denen man präzise Antworten geben könnte...



wenn du weiterliest, dann wirst du erfahren, woran es nicht klappt...

ich bekomme nur jeweils das eine hin, jedoch beides kombiniert funktioniert nicht...


----------



## Marco13 (19. Apr 2010)

Wenn man pushMatrix macht, kann man danach rotieren wie man will - und nach einem popMatrix ist "alles wieder so wie vorher" (d.h. wie vor dem pushMatrix). Vielleicht könnte dein Problem durch ein weiteres push/pop gelöst werden. Bau' evtl. mal ein KSKB...


----------



## Ya-Sin (21. Apr 2010)

Jetzt sieht mein verschiebbares Korrdinatensystem so aus...
Das Problem liegt jetzt dabei, das mein koordinatensystem beim verschieben des
Schiebereglers springt. Wenn ich ein Regler hin und her schiebe, dann stimmt die rotation, nur wenn ich eine andere verschiebe springt mein koordinatensystem, jedoch danach is die rotation wieder richtig...




```
for(int i = 0; i < 6; i++) {
gl.glPushMatrix();

//switch (parameter) {
//case 1:
//gl.glRotatef(zahl2, 0.0f, 1.0f, 0.0f);
//gl.glRotatef(zahl3, 0.0f, 0.0f, 1.0f);
//gl.glRotatef(zahl1, 1.0f, 0.0f, 0.0f);
//
//break;
//case 2:
//gl.glRotatef(zahl1, 1.0f, 0.0f, 0.0f);
//gl.glRotatef(zahl3, 0.0f, 0.0f, 1.0f);
//gl.glRotatef(zahl2, 0.0f, 1.0f, 0.0f);
//
//break;
//case 3:
//gl.glRotatef(zahl1, 1.0f, 0.0f, 0.0f);
//gl.glRotatef(zahl2, 0.0f, 1.0f, 0.0f);
//gl.glRotatef(zahl3, 0.0f, 0.0f, 1.0f);
//break;

gl.glColor3f(1.0f, 1.0f, 1.0f);
glut.glutWireCube(0.8f);
gl.glColor3f(1.0f, 0.5f, 0.0f);

if(i==0){}
if (i < 4) {gl.glRotatef(i * (90.0f), 0.0f, 1.0f, 0.0f);}
if (i == 4) {gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);}
if (i == 5) {gl.glRotatef(90.0f,-1.0f, 0.0f, 0.0f);}
gl.glTranslatef(0.0f, 0.0f, 1.5f);
gl.glBegin(GL.GL_LINES); {
gl.glVertex3f( 0.0f, 0.0f, 0.0f);
gl.glVertex3f( 0.0f, 0.0f,-1.5f);}
gl.glEnd();
glut.glutWireCone(0.05f, 0.25f, 10, 5);
gl.glRasterPos3f(-0.1f, 0.1f, 0.4f);


switch (i) {
case 0: drawText("Z"); break;
case 1: drawText("X"); break;
//case 2: drawText("-Z"); break;
//case 3: drawText("-X"); break;
//case 4: drawText("-Y"); break;
case 5: drawText("Y"); break;
}


//}

//System.out.println("X-Achse "+zahl1+"... Y-Achse "+zahl2);
gl.glPopMatrix();
}
```


----------

