Abstand berechnen

merlinet

Grünschnabel
Hallo!
Ich möchte die Abstande zwichen zwei bewegende Objekte berechnen.
Die beide Objekte sollen eine Bestimmte Position (X1, Y1), (X2, Y2) zufällig zugewiesen werden. Beide Objekte sollen durch Zufall in eine andere Position gehen (X11, Y11), (X22, Y22).
Wenn den Abstand zwischen beide Objekt weniger als 10 ist, soll eine Warnung herauskommen. Wenn den Abstand zwischen beide Objekt weniger als 5 ist, soll ein Notaus (Alles auschalten) geben. Die beide Objekte laufen auf einem Rechteck und benutzen den Kürzesten Weg zum Ziel.
Ziel der Aufgabe ist es die Gefahr (Kollision) zu erkennen und zu vermeiden.

Kann jemand mir dabei helfen? Ein Codebeispiel wäre mir sehr Hilfreich.

Merlinet
 
Hi!

Ziel? Auf einem Rechteck laufen? Zufällig? Ein Notaus geben?

Kommt gerade etwas unverständlich rüber!

Den kürzesten Abstand von 2 Punkten im Raum, wie du ihn kennst und wahrscheinlich benutzt, berechnest du mit der euklidischen Norm, welcher im zweidimensionalen dem Satz des Pythagoras ähnelt:

a² + b² = c²

=> c = Wurzel(a²+b²)

Dabei ist c der gesuchte Abstand und a und b sind die Abstände zwischen den Punkten in x- bzw. y Richtung.

Hilft dir das weiter?

mfg,

RoCMe
 
Zuletzt bearbeitet:
Hi!

Ziel? Auf einem Rechteck laufen? Zufällig? Ein Notaus geben?

Kommt gerade etwas unverständlich rüber!

Den kürzesten Abstand von 2 Punkten im Raum, wie du ihn kennst und wahrscheinlich benutzt, berechnest du mit der euklidischen Norm, welcher im zweidimensionalen dem Satz des Pythagoras ähnelt:

a² + b² = c²

=> c = Wurzel(a²+b²)

Dabei ist c der gesuchte Abstand und a und b sind die Abstände zwischen den Punkten in x- bzw. y Richtung.

Hilft dir das weiter?

mfg,

RoCMe

Hallo!
Zuerst möchte ich mich bedanken. Ich hätte das Thema anders nennen sollen. Mein Problem liegt nicht bei der einfachen anwendung der Satz von Pithagoras. Ich stelle das Problem anders dar:

Stellen wir uns vor, zwei leute sich auf die Schiene bewegen. Der gesamte Schienenetz bildet einen Rechteck; das heisst die zwei Leute bewegen sich auf dem Rechteck von einem Puntk (X1, Y1) und (X2, Y2) jeweils zu einem anderen Punkt (X'1, Y'1) und (X'2, Y'2) jeweils, und benutzen den Kürszesten Weg beide.

Meine Aufgabe (Mein Problem) liegt dabei zuerst ein Algotrihmus zu implementieren, das erkennt ob bei Benutzung der Kürzesten Weg ein Kollisiongefahr besteht.

Das soll ich in Java Programmieren mit der Bedingungen die ich oben genannt habe. Also wenn ein Gefahr besteht, wird ein Meldung geschickt.

Das ich meine Frage. Wie kann ich das esrt auf Papier bringen? wie implementiere ich das in Java, so dass jeder Sekunde eine Meldung auf der Konsole erscheint, mit derjeweilige Ist_Koordianten (wo beide sich jetz befinden) und Soll_Koordinaten (wohin beide möchten) und das Verhalten des Programm (Gefahr, kein Gefahr).

Danke im Voraus

Merlict
 
Du könntest bevor sich die Objekte bewegen 2 Rectangle erzeugen, entlang der Schiene bewegen und per intersection checken, ob sie sich berühren. Mit der einer jeweiligen Längenänderung wird der Abstand geprüft.
Statt der Konsolenausgabe würde ich Labels ect. verwenden, da diese ein Programm ziemlich ausbremsen.
 
Hallo!

Die Aufgabenstellung klingt interessant! Darf ich fragen, wo du die her hast? (Hoch-) Schule?

Wie weit bist du denn / was funktioniert schon? Fang am Besten ganz langsam an. Zunächst mal nur ein Objekt, dass immer den kürzesten Weg läuft. Das ist schon ein wenig "tricky". Dann fügst du ein 2. Objekt hinzu. Und anschließend kümmerst du dich erst um die Kollisionen!

Generell kannst du erstmal Kollisionen ausschließen, wenn beide Objekte in die gleiche Richtung, also gegen oder in den Uhrzeigersinn laufen. Dann wirds ein wenig kniffilig. Ich hab da eine Idee, wie es dan weitergeht, aber komm erst mal an diesen Punkt - und dann frag noch mal :)

Ach ja:
Statt der Konsolenausgabe würde ich Labels ect. verwenden, da diese ein Programm ziemlich ausbremsen.
Ich wüsste nicht, was gegen die Konsole spricht. Eine vernünftige GUI macht viel Arbeit und ist in vielen Fällen gar nicht nötig!
Gruß,

RoCMe
 
Zuletzt bearbeitet:
Jedenfalls solltest du einen Timer verwenden. Bei jedem Tick des Timers bewegst du die beiden Objekte ein Stückchen weiter und prüfst, wie weit die beiden Objekte voneinander entfernt sind.
 
Zurück