# Rotation mit Radiusänderung



## BraunBerry (15. Nov 2016)

Hallo Community, 
nach einer langen Phase von Überlegungen und Tests stehe ich immer noch vor dem selben Problem: kurz zur Erklärung: Ich habe in der Mitte meines Spiels zentriert ein Raumschiff. Früher konnte es sich mit WASD in alle 4 Richtungen bewegen (eigentlich bewegt sich nur der Hintergrund). Jetzt habe ich versucht dass sich das Raumschiff mit A & D drehen kann (d.h. Hintergrund dreht sich), sodass sich quasi der ganze Weltraum sprich Planeten, Sonnen, Raumstationen, etc. pp. um einen punkt in der Mitte des Bildschirmes dreht. Die einfache Bewegung der Objekte hat funktioniert, das Drehen auch aber sobald ich versuche beides zu kombinieren wirds knifflig. Ich will also mit meinem Raumschiff weiterfliegen und dabei lenken. Ich habe das ganze versucht mit meiner Raumstation zu realisieren aber es hat nicht geklappt. 

Hier wird die Station an die statische Position ausgehend von der Ursprungskoordinate (ORIGINX, ORIGINY) gesetzt (geschieht im render void, wird also bei jedem Tick ausgeführt):

```
Station01X  = (Starmap.ORIGINX + (int) (600 * Application.DIMENSION));
Station01Y  = (Starmap.ORIGINY - (int) (100 * Application.DIMENSION));
```

Und hier habe ich den Algorithmus um die Station um einen Wert um mein Raumschiff zu drehen (geschieht im Timer (javax.swing)):

```
StationsRadius[0] = Point2D.distance(Station01X, Station01Y, Spaceship.SHIP_X, Spaceship.SHIP_Y);
StationsAngle[0] = Math.atan2(Station01Y - Spaceship.SHIP_Y, Station01X - Spaceship.SHIP_X);
StationsAngle[0] += Spaceship.RotationSpeed / 5;
Station01X = Spaceship.SHIP_X + Math.cos(StationsAngle[0]) * StationsRadius[0];
Station01Y = Spaceship.SHIP_Y + Math.sin(StationsAngle[0]) * StationsRadius[0];
if (StationsAngle[0] >= 2*Math.PI){StationsAngle[0] = 0.01;}
```

Meine Idee: ich würde quasi eine Linie zeichnen mit dem Ursprung an meinem Raumschiff, bei dieser den Winkel ändern und den Radius vergrößern bzw. verkleinern und an das Ende dieser Linie immer meine Raumstation zeichnen.

Meine Frage: Habt ihr verstanden was ich meine? Ist das so realisierbar, wenn ja wie? Habt ihr andere Vorschläge, wie ich das Problem eleganter lösen könnte?

Danke an jeden der sich hierfür Zeit nimmt 

lg BraunBerry


----------

