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) 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?
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: