Bewegung innerhalb eines Koordinatensystems berechnen

Ghorki

Aktives Mitglied
Hallo Leute,

ich komme gerade nicht wirklich weiter (könnte eventuell auch an der Uhrzeit liegen), aber es wäre echt super, wenn mir jemand weiterhelfen könnte. :)

Und zwar habe ich ein Koordinatensystem, dass oben Links mit 0 beginnt.
Nun habe ich einen Startpunk(50,1), und einen Zielpunkt(20,20).

Wie kann ich jetzt nach und nach den direkten Weg zum Zielpunkt berechnen und zurücklegen?
Die Methode soll natürlich nicht nur Richtung Links sondern in alle Richtungen funktionieren.

Schonmal vielen Dank für euren Denkanstoß.

MfG
Ghorki
 

Michael...

Top Contributor
Wie kann ich jetzt nach und nach den direkten Weg zum Zielpunkt berechnen und zurücklegen?
was heißt "direkten Weg ... zurücklegen"? Soll sich da etwas von Punkt S nach Punkt Z bewegen? Die Richtung wird ja über den Vektor SZ bestimmt
Code:
SZ = (Zx - Sx)
     (Zy - Sy)

==> v = (-30 | 19)
Daraus gegebenenfalls den Einheitsvektor bilden und diesen mit gewüschten Einheiten pro Zeiteinheit multiplizieren.
 

Michael...

Top Contributor
Ist den der Begriff Vektor aus Mathe oder Physik bekannt?
Allgemein ausgedrückt musst Du bestimmten um wie viel sich das Objekt in x und y Richtung bewegen muss, um von Punkt S(tart) zum Punkt Z(iel) zu kommen. Dann musst Du wissen wie viel Strecke das Objekt pro Zeiteinheit zurücklegen kann - also die Geschwindigkeit des Objektes. Um damit zu berechnen um wie viele Schritte man das Objekt jeweils in x und y Richtung versetzen muss.
 

Ghorki

Aktives Mitglied
Soo, ich habe mich jetzt mal in die Theorie eingelesen und habe es mir auch erklären lassen,
nur scheitert es jetzt einwenig an der Umsetzung.

Um näher auf meinen Code einzugehen.
Wenn ich mein Smarthphone Display berühre, wird folgender Code aufgerufen:

Java:
Main.class

Waffe.werfen(touchX, touchY);

Java:
Waffe.class

float targetX;
float targetY;

float x;
float y;

public static void werfen(float touchX, float touchY)
{
     targetX = touchX;
     targetY = touchY;
     wurfBool= true;
}


private void wurf()
{
     if(wurfBool == true)
     {
          
          // Code der die Waffe bewegen lässt
          x = 
          y =

          // Waffe neu Zeichnen
          getWaffe().setX(x);
          getWaffe().setY(y);
     }
}

// Dauerschleife
public void update()
{
     wurf();
}


Ich weiß auch nicht, wie ich den Richtungsvector mit einbringen muss...
 

Michael...

Top Contributor
Da scheint noch einiges im Argen. Mit dem Code kann ich nicht viel anfangen.
Bevor Du Dich mit Android auseinandersetzt, schadet es nicht sich mit den Java Grundlagen auseinander zu setzen. Die sind auch unter Android gültig.
Die static void werfen ist falsch, sie kann höchstens funktionieren wenn es nur eine Waffe gibt. Die Methode sollte eine Instanzmethode sein und ob die in der Klasse Waffe am richtigen Platz ist, ist auch fraglich.
"Dauerschleife" hört sich auch gefährlich an. Vor allem bei Smartphone Apps sollte man darauf achten die Resourcen zu schonen.

Ein Tutorial für 2D Spiele findest Du hier: http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html
Ist zwar nicht Android, aber auch unter Android gelten die selben Grundprinzipien.
 

Marco13

Top Contributor
Java:
int startX = ...
int startY = ...
int targetX = touchX;
int targetY = touchY;

for (int i=0; i<steps; i++)
{
    float alpha = (float)i/(steps-1);
    float fx = startX + alpha * (targetX - startX);
    float fy = startY + alpha * (targetY - startY);

    paintAt((int)fx, (int)fy);
}
das ganze müßte aber vermutlich in einem eigenen Thread oder über einen Timer gesteuert laufen, sonst wird man da keine Animation sehen....
 

Ghorki

Aktives Mitglied
Die update Methode wird automatisch mitgeliefert, wenn man von einem Sprite Objekt erbt, um Sachen wie animationen etc darzustellen. (Ich benutzte eine 2D Engine)

Mit der Instanzmethode hast du natürlich recht, hab ich aber nicht hinbekommen, deswegen hab ich die vorübergehend static gemacht...

Java:
Spirte waffe = new Waffe(...)

Ich kann so aber keine Methoden aus der Klasse Waffe aufrufen.
 

Michael...

Top Contributor
Wie gesagt, die Methode wurf und die Berechnung der Position zu einem bestimmten Zeitpunkt gehört nicht in die Klasse Waffe, das muss ausserhalb passieren.
Wenn Du eine 2D Engine verwendest, gibst da bestimmt auch ein Tutorial/Dokumentation dazu.
 

Marco13

Top Contributor
Nicht
Spirte waffe = new Waffe(...)
sondern
Waffe waffe = new Waffe(...)

Wo genau die Berechnung hingehört, darüber kann man streiten. Wenn es eine update-Methode gibt, die regelmäßig aufgerufen wird, muss man IN dieser Methode (ausgehend von der aktuellen Zeit, z.B. per System.nanotime ermittelt) die neue Position berechnen. Wenn das ganze noch realisitisch in einer Parabel fliegen soll, braucht man nur eine Position und eine Geschwindigkeit (ähnlich wie die "Particle"-Klasse in http://www.java-forum.org/mathematik/130544-formeln-fuer-einfache-schwerkraft-2.html#post865782 )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
J Bewegung des Roboters, schräg Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
Sogomn Flüssige Bewegung Java Basics - Anfänger-Themen 3
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Zufällige Bewegung Java Basics - Anfänger-Themen 25
B Bewegung falsch Java Basics - Anfänger-Themen 33
T Snake-BlueJ Bewegung Java Basics - Anfänger-Themen 7
P Unsaubere Bewegung Java Basics - Anfänger-Themen 4
K Bewegung von Partikeln in einem Partikelsystem. Java Basics - Anfänger-Themen 5
H bewegung Java Basics - Anfänger-Themen 6
M Bewegung + Rotation eines Objektes Java Basics - Anfänger-Themen 2
P Flackern bei der Bewegung Java Basics - Anfänger-Themen 2
N Applet ruckelt solange Maus nicht in Bewegung? Java Basics - Anfänger-Themen 3
C Grafik flimmert bzw. flackert bei Bewegung Java Basics - Anfänger-Themen 11
G Ball-Bewegung Java Basics - Anfänger-Themen 19
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
dapzoo Innerhalb eines Jahres intensivem Java-Selbststudium zur Anstellung? Java Basics - Anfänger-Themen 37
S Wert innerhalb eines anderen Wertes Java Basics - Anfänger-Themen 3
T split innerhalb Klammern ignorieren? Java Basics - Anfänger-Themen 6
x-tshainge Innerhalb von Textdatei addieren Java Basics - Anfänger-Themen 9
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Innerhalb von Zeichenketten tauschen Java Basics - Anfänger-Themen 1
S BufferedWriter innerhalb einer Methode Java Basics - Anfänger-Themen 2
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
A Werte innerhalb von resultset vergleichen Java Basics - Anfänger-Themen 2
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
MiMa abbruch innerhalb einer Rekursiven Schleife Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
O Vererbung this innerhalb von super Java Basics - Anfänger-Themen 7
Silvascus Erste Schritte Werte innerhalb eines Arrays addieren Java Basics - Anfänger-Themen 3
L Punkt innerhalb eines Bereiches verschieben Java Basics - Anfänger-Themen 9
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
T Erste Schritte run innerhalb eines package Java Basics - Anfänger-Themen 1
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
B Variablen global abspeicher innerhalb von Methoden Java Basics - Anfänger-Themen 7
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
M Text innerhalb Anführungsstriche als "eins" auswerten Java Basics - Anfänger-Themen 5
O Files eines Directories innerhalb eines JAR-Files auflisten Java Basics - Anfänger-Themen 0
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
B Zufallsdatum innerhalb eines bestimmten Bereiches erzeugen Java Basics - Anfänger-Themen 3
D OOP Identifzierung eines Objektes innerhalb eines Array Java Basics - Anfänger-Themen 3
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
L Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator Java Basics - Anfänger-Themen 10
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
B for-schleife innerhalb neuer Methode Java Basics - Anfänger-Themen 5
N Innerhalb des Programmes RAM einstellen Java Basics - Anfänger-Themen 2
J Variablen überschreiben innerhalb einer Klasse Java Basics - Anfänger-Themen 7
N Zugriff auf Werte in Arrays innerhalb ArrayList Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
H Innerhalb eines Package wird eine Klassenmethode nicht gefunden. Java Basics - Anfänger-Themen 2
Kaniee Zugriffe innerhalb eines Arrays Java Basics - Anfänger-Themen 9
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
J Dateien innerhalb einer JAR verwenden Java Basics - Anfänger-Themen 3
J Innerhalb der Border zeichnen Java Basics - Anfänger-Themen 9
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
S Input/Output Problem mit dateizugriff innerhalb der .jar (Applet) Java Basics - Anfänger-Themen 2
K Zufällige Auswahl innerhalb eines Arrays und Arrays aus JLabel füllen Java Basics - Anfänger-Themen 32
K Bild mit Maus innerhalb eines Rahmens bewegen Java Basics - Anfänger-Themen 5
E Zeile innerhalb Datei überschreiben Java Basics - Anfänger-Themen 2
K Methoden Zustand innerhalb einer Instanz ändern Java Basics - Anfänger-Themen 2
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Variablen Variable innerhalb eines if-Statements? Java Basics - Anfänger-Themen 10
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
E Elemente innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 7
M Main methode innerhalb von Java aufrufen Java Basics - Anfänger-Themen 11
A lokale Variable innerhalb "actionPerformed()" Java Basics - Anfänger-Themen 10
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
J Diverse Frag zu Vererbung innerhalb von Java Java Basics - Anfänger-Themen 6
O Änderungen innerhalb for-Schleife speichern Java Basics - Anfänger-Themen 17
J Wie auf eine Datei innerhalb des JAR-Files zugreifen Java Basics - Anfänger-Themen 2
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
T switchcase innerhalb Schleife: von case-Fall aus Schleife beenden Java Basics - Anfänger-Themen 3
L Timer innerhalb eines Threads Java Basics - Anfänger-Themen 3
H Klassen zur Anzeige ines Bildes und zum Zeichnen innerhalb diese Bildes Java Basics - Anfänger-Themen 2
D Datei innerhalb einer zip bearbeiten Java Basics - Anfänger-Themen 8
D .class-Datei innerhalb einer .jar-Datei verändern Java Basics - Anfänger-Themen 4
R Interface innerhalb einer Klasse definieren..? Java Basics - Anfänger-Themen 2
M Methode innerhalb Methode Java Basics - Anfänger-Themen 10
C Variable Zeichenkette innerhalb einer Schleife ersetzen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben