kürzester weg zwischen zwei Punkten, Koordinaten finden

Status
Nicht offen für weitere Antworten.
C

chief. wiggam

Gast
Servus

ich habe folgendes Problem und weiss nicht, wie ich es angehen soll, bzw. nicht so, das es alle fälle abdeckt:

Es seien zwei java.awt.Point Objekte gegeben. Ich möchte jetzt den kürzesten Weg zwischen diesen beiden Punkten berechnen, das ist ja auch ganz einfach -> satz des pytagoras. Diesen kürzesten Weg möchte ich nun weiterverarbeiten und brauche die Point-Objekte aus von dieser Geraden, wie komm ich an diese ran?

Beispiel:
p1.x = 100, p1.y= 100;
p2.x = 200, p2.y = 200;
Code:
                    p2
                -
            -
        -
    -
p1

Ich brauche nun die Point-Elemente, die auch Graphics.drawLine benötigt um die Linie zu zeichnen.

Kann mir jemand einen Ansatz geben?
 

Deady

Mitglied
Das geht ziemlich einfach:

Zunächst brauchst du die anzahl der zwischenschritte.

Dann berechnest du den abstand zwischen point1.x und point2.x, genauso dann für y.

Abstandx = point1.x – point2.x;
abstandy = point1.y – poin2.y;

Die ergebnisse kannst du mit hilfe einer for-schleife in einem oder zwei arrays ablegen.

For (int i = 1; i < zwischenschritte; i++) {
arrayx += arrayx[i-1] + (abstand/zwischenschritte);
arrayy += arrayy[i-1] + (abstand/zwischenschritte);
}

mfg
Deady
 

Deady

Mitglied
sorry, so isses richtiger:

For (int i = 0; i < zwischenschritte; i++) {
arrayx = arrayx[i-1] + (abstandx/zwischenschritte);
arrayy = arrayy[i-1] + (abstandy/zwischenschritte);
}

Den startpunkt fügst du im array an position [0] ein, den endpunkt entsprechend am ende.

mfg
Deady
 
J

JohannisderKaeufer

Gast
Wie wäre es mit einer Umrechnung in Polarkoordinaten und wieder zurück zu den Kartesischen.

In den Polarkoordinaten hast du den Winkel und mußt nur die Länge variieren.
 

darkeye2

Bekanntes Mitglied
Hallo, also wie man die gerade zeichnet ist mir zwar bekannt, aber ich hab ein anderes problem ... wie kriege ich den kürzesten weg raus, wenn nichtalle pixel genutzer werden dürfen... bsp.:
* = unpassierbare punkte; # = anfangs und endpunkte; :
Java:
           *********                     
   #      ****
            *******
                         ***      #
 

faetzminator

Gesperrter Benutzer
Japs, ein Dijkstra oder A* funktioniert, hab ich in C mal geschrieben. Du kannst da einfach die Entfernung weglassen.
 

ice-breaker

Top Contributor
A* wäre die bessere Wahl ;)
Da er hier geschickt die Luftlinie als Heuristik nutzen kann, hat er ein besseres Laufzeitverhalten mit dem A* im Gegensatz zum Dijkstra
 

darkeye2

Bekanntes Mitglied
hmm, hab mich etwas umgesehen, aber komme net wirklich weiter, also nehmen wir mal an, ich habe folgende situaltion:
Punkt A (10, 50)
Punkt B (70, 15)
Unpassierbares rechteck definiert durch die Punkte:
R1 (25, 20)
R2 (55, 20)
R3 (25, 60)
R4 (55, 60)

So, und jetzt brauche ich ja den weg von A nach B, wobei ich wissen buss, wo sich alle zwischenpunkte befinden, also wo jetzt punkte liegen, an dennen sich die richtung ändert. damit ich das graphisch darstellen kann.

Schon mal Danke für die bisscherigen Tipps!
 

darkeye2

Bekanntes Mitglied
jop, so wie ich das verstehe, braucht der algo irgendwleche punkte, und er rechnet nur aus, welche punkte ich verbindung muss, um den kürzesten weg zu ermitteln, aber hier habe ich ja sozusagen nur 2 punkte, und dazwischen eine fläche, die net durchquert werden kann, es könnte jetzt z.b. so ausschauen:
Java:
+-----------------------+
|                                |
|            +--+         B    |
|            |**|               |
|         +-+**|              | 
| A      |****|              |
|         +-----+             |
+-----------------------+

(auf der rechten seite sollte es den rand auc hgeben, ist irgendwie komisch ...)

Auf jeden fall, wie soll ich den das nicht passierbare feld im algorithmus angeben?
 

faetzminator

Gesperrter Benutzer
Ich schrieb damals eine KI für ein interaktives Game, in welches unsere KI's gegeneinander kämpften (schweizer Informatikolympiade). Da bekam ich vom Server gleich ne Map und konnte diese 1:1 verwenden. (. = freie Fläche, # = Mauer, $ = Futter etc.). Du musst einfach irgendwie intern speichern, was ein Feld ist. Falls du da nur Mauer und "nicht Mauer" hast, kannst du einen boolean dafür verwenden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Optimierung kürzester Weg im Warenlager Allgemeine Java-Themen 8
J Methoden Kürzester Weg im Graphen -.- Allgemeine Java-Themen 4
-horn- Kürzester Pfad: Code so eine gute Idee? Allgemeine Java-Themen 7
H Kürzester Weg Allgemeine Java-Themen 4
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
Master3000 Dateien zwischen verschiedenen Netzwerken senden Allgemeine Java-Themen 17
CptK Backpropagation parallelisieren: Kommunikation zwischen den Threads Allgemeine Java-Themen 7
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
Kirby.exe Schauen ob ein Kante zwischen Knoten existiert Allgemeine Java-Themen 4
L Schlüsselworte Wie kann ich am Besten ein LocalDate zwischen Anfangs und EndDate checken Allgemeine Java-Themen 10
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
N Kollision zwischen ImageIcon und Rechteck Allgemeine Java-Themen 1
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
B Zufällig zwischen vorgegebenen Zahlen auswählen Allgemeine Java-Themen 6
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
V Input/Output Austausch von Bytes zwischen C# und Java Allgemeine Java-Themen 3
L Kommunikation zwischen C# und Java? Allgemeine Java-Themen 5
A Best Practice Unterschied zwischen einer sauberen Dependency Injection und einer statischen Klasse Allgemeine Java-Themen 5
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
M Unterschied zwischen Win 7/2008R2 und Win8.1/2012R2? Allgemeine Java-Themen 8
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
O Socket-Unterschiede zwischen Windows und Ubuntu Allgemeine Java-Themen 2
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
S Eclipse Abhängigkeiten zwischen den Projekten in Eclipse Allgemeine Java-Themen 2
G nervendes Problem mit unterschieden zwischen Javax64 und x86 | je nach Programmbedarf beides nötig Allgemeine Java-Themen 2
S Threads Kommunikation zwischen SocketThread und WorkerThread Allgemeine Java-Themen 11
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
B Unteschiede zwischen Kantenoperatoren Allgemeine Java-Themen 3
A Kommunikation zwischen 2 Jar-dateien Allgemeine Java-Themen 16
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
C Komisches Verhalten zwischen Set und List bei contains Allgemeine Java-Themen 6
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
N Gridbaglayout - Abstände zwischen Komponenten einstellen Allgemeine Java-Themen 2
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
D Exakte Unterschied zwischen diesen Elementen? Allgemeine Java-Themen 5
C Swing Daten zwischen JTable teilen Allgemeine Java-Themen 6
N Unterschied zwischen "Java" und "Java mit Eclipse" Allgemeine Java-Themen 17
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
S Assoziation zwischen 2 klassen Allgemeine Java-Themen 14
V Threads & Pipes Datenaustausch zwischen Threads Allgemeine Java-Themen 2
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7
Lufti Unterschied zwischen Djava.library.path und Class-Path im Manifest? Allgemeine Java-Themen 2
E kommunikation zwischen Fenstern Allgemeine Java-Themen 3
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7
B Unterschied zwischen Klasse und Objekt? Allgemeine Java-Themen 8
S Datenformat zum Austausch zwischen Java und Python? Allgemeine Java-Themen 3
G Interface zwischen 2 Programmierern Allgemeine Java-Themen 10
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
J Unterschied zwischen "Debug" und "Run" Allgemeine Java-Themen 16
A java.io-Änderungen zwischen java 1.4 und 1.6 Allgemeine Java-Themen 18
G Zwischen Datei und Verzeichnis unterscheiden. Allgemeine Java-Themen 11
J Unterschiede zwischen normaler und Debug Ausfuehrung? Allgemeine Java-Themen 2
G Linked List zwischen zwei Threds übergeben Allgemeine Java-Themen 11
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
A Kommunikation zwischen C++ und Java-Programm Allgemeine Java-Themen 4
C JTable, Abstand zwischen Zellen Allgemeine Java-Themen 2
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
G Unterschiede zwischen Java 5 und 6 Allgemeine Java-Themen 5
P Unterschied zwischen Funktion und Methoden Allgemeine Java-Themen 3
T Möglichkeiten der Kommunikatin zwischen Plugins in Ecl. RCP Allgemeine Java-Themen 3
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
T JDBC: Unterschiede in Interfaces zwischen 2 Java-Versionen. Allgemeine Java-Themen 6
O Unterschied zwischen Semaphoren/Lock und ExecutorService Allgemeine Java-Themen 3
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
MQue Daten-Austausch zwischen Klassen verschiedener Pakete Allgemeine Java-Themen 5
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
MQue Datenaustausch zwischen 2 Klassen Allgemeine Java-Themen 10
MQue zwischen Class zum speichern von Werten Allgemeine Java-Themen 4
I Unterschied zwischen Applet und JApplet Allgemeine Java-Themen 2
O Regex Texte zwischen html code Allgemeine Java-Themen 4
J Interaktion zwischen Klassen Allgemeine Java-Themen 4
W Beziehungen zwischen Usern ermitteln Allgemeine Java-Themen 2
G Daten aus einer For Schleife zwischen speichern Allgemeine Java-Themen 4
M Wie mit Dateipfaden zwischen Linux und WIndows hantieren? Allgemeine Java-Themen 2
M Kommunikation zwischen 2 Programmen Allgemeine Java-Themen 7
G Kommunikation zwischen Threads und Gui Allgemeine Java-Themen 2
S Unterschiede zwischen SWINGS; Struts und AWT Allgemeine Java-Themen 4
Z Zwei Listener zwischen zwei Klassen Allgemeine Java-Themen 4
P kommunikation zwischen dialog und threads Allgemeine Java-Themen 4
R Der Unterschied zwischen 2.1 und 2.10 Allgemeine Java-Themen 2
Q Typecast zwischen Klassen mit implementierter Schnittstelle Allgemeine Java-Themen 4
P Was ist der Unterschied zwischen JSP und Servlet ? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben