# um eigene Achse drehen



## Manni0001 (22. Jun 2007)

Hallo ich habe ein großes Problem,

ich will mit der Tastatur Pfeiltasten 
VK_LEFT soll der Gegenstand sich links um seine Achse drehen,
VK_RIGHT soll der Gegenstand sich rechts um seine Achse drehen.
bei meinem Code verschiebe ich den gegenstand nach links oder rechts.

Was mache ich falsch??


```
while(criteria.hasMoreElements()) {
                        ev = (WakeupOnAWTEvent)criteria.nextElement();
                        AWTEv = ev.getAWTEvent();
                        for(i = 0; i < AWTEv.length; i++) {
                                KeyEv = (KeyEvent)AWTEv[i];
                                transformGroup.getTransform(trans);
                                tempTrans.setIdentity();
                                if(KeyEv.getKeyCode() == KeyEvent.VK_UP) tempTrans.setTranslation(new Vector3f(0.0f, -0.1f, 0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_DOWN) tempTrans.setTranslation(new Vector3f(0.0f, 1.0f, 0.0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1));

                                trans.mul(tempTrans);
                                transformGroup.setTransform(trans);
                        }
                }
                wakeupOn(criterion);
```

Gruß Manni


----------



## merlin2 (22. Jun 2007)

Mach bitte compilierbaren, ausführbaren Code daraus.


----------



## Guest (22. Jun 2007)

Hallo,

es geht doch nur darum,


```
else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));  // hier soll sich der 
Gegenstand um seine eigene Achse drehen aber Anstatt verschiebt es sich nach Links  
else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1)); // hier soll sich der 
Gegenstand um seine eigene Achse drehen aber Anstatt verschiebt es sich nach Rechts
```

also muß der Fehler an dieser stelle sein "Math.toRadians(-1)"  aber ich weis nicht was ich ändern könnte.


den rest Code findest du hier

http://www.java-forum.org/de/topic51114_transformgroup-position.html




```
class KeyBehavior extends Behavior {
        private TransformGroup transformGroup;
        private Transform3D trans = new Transform3D(), tempTrans = new Transform3D();
        private WakeupCriterion criterion;
        private int i =  0;

        public KeyBehavior( TransformGroup tg) {
                transformGroup = tg;
        }

        public void initialize() {
                criterion = new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);
                wakeupOn(criterion);
        }

        public void processStimulus(Enumeration criteria) {
                WakeupOnAWTEvent ev;
                AWTEvent AWTEv[];
                KeyEvent KeyEv;

                while(criteria.hasMoreElements()) {
                        ev = (WakeupOnAWTEvent)criteria.nextElement();
                        AWTEv = ev.getAWTEvent();
                        for(i = 0; i < AWTEv.length; i++) {
                                KeyEv = (KeyEvent)AWTEv[i];
                                transformGroup.getTransform(trans);
                                tempTrans.setIdentity();
                                if(KeyEv.getKeyCode() == KeyEvent.VK_UP) tempTrans.setTranslation(new Vector3f(0.0f, -0.1f, 0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_DOWN) tempTrans.setTranslation(new Vector3f(0.0f, 1.0f, 0.0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1));

                                trans.mul(tempTrans);
                                transformGroup.setTransform(trans);
                        }
                }
                wakeupOn(criterion);
        }
}
```

danke Manni


----------



## merlin2 (27. Jun 2007)

Besagte Stelle ist richtig. Der Fehler muss woanders liegen.


----------

