1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
517
517
EMPFEHLEN
-
17.02.10 22:13 #1
Ich würde gerne ein Panel so bewegen, dass sich der Mittelpunkt nach 90 Schleifendurchläufen auf dem Mittelpunkt eines anderen JPanels befinden. Ich habe den Sinus, Cosinus. und Pythagoras. Ich will das Vrehältniss zwischen Sinus und Cosinus ausrechnen, den Pythagoras in 90 Schritte aufteilen, und den Pythagoras im Verhältniss 1 (x)
Sinus/Cosinus) (y) verwenden.
Vorerst wollte ich nur mal x verändern. Nur irgendwie läuft das schief, das JPanel fliegt irgendwo anderst hin. Kann mir wer bitte sagen, was ich falsch mache?
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
public void start(Point panelCenter, Point galaxyCenter) { double ang = Math.atan2(panelCenter.y - galaxyCenter.y, panelCenter.x - galaxyCenter.x); sinus = Math.sin(ang); cosinus = Math.cos(ang); pythagoras = Math.sqrt(Math.pow(galaxyCenter.x - panelCenter.x, 2) + Math.pow(galaxyCenter.y - panelCenter.y, 2)); this.galaxyCenter = galaxyCenter; new Thread(this).start(); } public void run() { double movePerSteps = pythagoras / 90; double realGameX = game.getX(); double realGameY = game.getY(); if(zoomMode == ZOOM_MODE_IN) { for(double startZoomFactor = 0.1d; startZoomFactor < 1.0d; startZoomFactor+= 0.01d) { game.setLocation((int)realGameX, (int)realGameY); realGameX+= movePerSteps; game.setZoomFactor(startZoomFactor); game.repaint(); try { TimeUnit.MILLISECONDS.sleep(1L); } catch (InterruptedException e) { e.printStackTrace(); } } } }
Geändert von Kai008 (18.02.10 um 08:36 Uhr)
-
Mir fallen sofort drei Merkwürdigkeiten auf (hoffentlich sind das alle):
1. Die Funktion atan2 erwartet (seltsamerweise) den y-Wert als ersten Parameter, den x-Wert als zweiten Parameter. Du hast es umgekehrt angegeben.
2. Bist du sicher, dass du im atan2-Aufruf eine Summe übergeben musst und keine Differenz?
3. realGameY wird der Wert von game.getX() zugewiesenVielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
18.02.10 08:51 #3
Danke für die Hinweiße. ich habe den Code oben editiert. Ob ich addieren/subtrahieren muss weiß ich leider nicht, ich rate eigendlich meistens so lange rum, bis es funktioniert. Leider funktioniert es immer noch nicht.
Sobald der Thread gestartet wird, bewegt sich die Galaxy in Millisekundenschnelle nach rechts aus dem Bild.
Ich habe ein JApplet mit einer Variablen Anzahl an Galaxien:
http://666kb.com/i/bgstin0up3n7ltf0k.jpg
Durch die scale-Funtkion wird dabei in der paint "rausgezoomt". Ohne den "Bewegungsbefehlen" schaut es in Originalgröße so aus:
http://666kb.com/i/bgstmxdxd4oxvq8uc.jpg
Ich hätte nur gerne, dass sich wärend dem Zoom die Galaxy zentriert.
Ähnliche Themen
-
JComponent in JPanel frei bewegen
Von karl_soost im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 20.08.10, 10:00 -
JPanel - 2 Objekte gleichzeitig bewegen
Von Drokz86 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 25.08.09, 12:25 -
GridBagLayout in JPanel: Wie stelle ich es an das Komponenten im JPanel ...
Von mungoparks im Forum JavaAntworten: 7Letzter Beitrag: 16.05.07, 17:03 -
JPanel Instanz in einen JPanel laden ?
Von mkoeni1 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 15.01.07, 12:15 -
Cursor auf eine bestimmte Position bewegen.
Von DJ_Schorschi im Forum .NET ArchivAntworten: 7Letzter Beitrag: 08.01.05, 13:50





Zitieren
Login





