tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Vereth
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
517
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    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)
     

  2. #2
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    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
    Kai008 bedankt sich. 
    Vielen 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.

  3. #3
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    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

  1. JComponent in JPanel frei bewegen
    Von karl_soost im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 20.08.10, 10:00
  2. JPanel - 2 Objekte gleichzeitig bewegen
    Von Drokz86 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 25.08.09, 12:25
  3. Antworten: 7
    Letzter Beitrag: 16.05.07, 17:03
  4. JPanel Instanz in einen JPanel laden ?
    Von mkoeni1 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 15.01.07, 12:15
  5. Cursor auf eine bestimmte Position bewegen.
    Von DJ_Schorschi im Forum .NET Archiv
    Antworten: 7
    Letzter Beitrag: 08.01.05, 13:50