JPanel zu Position bewegen.

Kai008

Erfahrenes Mitglied
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?

Java:
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();
			}
		}
	}
}
 
Zuletzt bearbeitet:
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() zugewiesen
 
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.
 
Zurück