Uhrzeigersinn anhand von Koordinaten

T-M

Mitglied
Hallo liebe Community!

Im Rahmen einer Projektarbeit in der Schule sollen wir einen Roboter programmieren, der neben verschiedenen Lagern und Tankstellen auch Baustellen anfahren soll. Jede Baustelle besitzt Koordinaten (x,y), wobei es insgesamt vier Stück gibt. (je nach "Level" verschieden angeordnet). Der Roboter startet ebenfalls bei zufälligen Koordinaten.


Nun stehe ich vor folgendem Problem (die nächstgelegene Baustelle habe ich über Pythagoras errechnet): Wie finde ich heraus, welche Baustelle im uhrzeigersinn als nächstes folgen würde (unabhängig von der Entfernung). Insgesamt möchte ich so die Baustellen nacheinander im uhrzeigersinn ansteuern.


Vielen Dank schonmal und einen sonnigen Tag noch :)

T-M
 

XHelp

Top Contributor
Sofern es nicht 10000 Tankstellen sind, kannst dir ja die Winkeln angucken, wo es am kleinsten ist, so wie im Anhang angedeutet.

P.S. Nicht Tankstellen, sondern Baustellen, aber es ist Jacke wie Hose
 

Anhänge

  • roboter.png
    roboter.png
    17,3 KB · Aufrufe: 45
O

OldBoy

Gast
Um die Baustellen im "Uhrzeigersinn" abfahren zu können, benötigst du zunächst mal eine Mitte um die sozusagen der Zeiger läuft. Ich nehme an, diese Mitte sei die Position des Baggers.
Dann kannst du die Winkel der einzelnen Baustellen zu dieser Mitte finden und entsprechend deine Sortierung festlegen.
Die Winkelbestimmung könnte so laufen:
Seien XB,YB die Koordinaten des Baggers und XS,YS die Koordinaten einer Baustelle, dann könnte jeweils ein Winkel z.B.
so bestimmt werden.
[c]dblWinkelArc = atan2(YS-YB, XS-XB)[/c]
Du erhältst so Winkel zwischen -pi und +pi (Winkel sind im Bogenmass, pi entspricht 180°)
(siehe auch ATAN2 bei wikipedia)
Achtung: Befände sich der Bagger zufällig bereits an einer der Baustellen, liese sich kein Winkel bestimmen.
 
O

OldBoy

Gast
Der Abstand der punkte P1(XB,YB) und P2(XS,YS) berechnet sich mit:
[c] dblR = sqrt( (XB-XS)*(XB-XS) + (YB-YS)*(YB-YS) ) [/c]
 

T-M

Mitglied
Hallihallo,

vielen Dank für eure SCHNELLEN Antworten!

An Winkel hatte ich auch schon gedacht, jedoch frage ich mich, wie ich dem Robo mitteilen soll, welche der beiden Baustellen angefahren werden soll. Mit dem kleinsten Winkel habe ich ja nunmal 2 Baustellen als Ergebnis. Und dann automatisch die Baustelle mit dem gerinsten Abstand zu nehmen, würde zu Fehlern führen?! ???:L
 
O

OldBoy

Gast
Also ich verstehe dein Problem vielleicht nicht wirklich, aber ich dachte an folgende Strategie:
- Erfasse die Positionen der Baustellen in einem Array
- Berechne Winkel und Abstand aller Baustellen zur Anfangsposition des Baggers und erfasse diese ebenfalls im Array
- Sortiere das Array 1. nach Winkel und 2. nach Abstand (z.B. bei gleichem Winkel zuerst die mit dem kleineren Abstand).
- Fahre die Positionen gemäß der Sortierung in deinem Array ab
Wenn du bei jeder Baustelle erst entscheiden willst, welche dann wieder die nächste ist,
machst du es dir unnötig schwer, denk ich.
 
O

OldBoy

Gast
Wenn es dir wichtig ist, dass du mit der nächstgelegenen Baustelle anfängst
(da könnte es ja dann auch mehrere geben und du würdest dann irgendeine beliebige davon wählen ?)
dann subtrahierst du vielleicht, bevor du das Array sortierst bei allen Winkeleinträgen des Array den Winkel der zuerst anzufahrenden Baustelle, ist ein Winkel damit negativ, so addierst du 360° (sprich 2*pi).
So würde diese nächstgelegene Baustelle den kleinsten Winkel (nämlich 0°) und den kleinsten Abstand haben, somit auch nach der Sortierung die Erste sein.
 

T-M

Mitglied
Danke OldBoy! Genau so haben wir es jetzt umgesetzt. Anfangs wollte ich zwar zu jedem Zeitpunkt die Winkel berechnen, aber jetzt berechnen wir sie einmalig und fahren dann das Array nach ein ander ab.

THX!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Polygon Punkte im Uhrzeigersinn sortieren Java Basics - Anfänger-Themen 2
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Y Suche von Studenten anhand Ihrer Eigenschaften. Java Basics - Anfänger-Themen 1
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
M String zerlegen anhand anderer String Java Basics - Anfänger-Themen 6
M Allgemeine Java-Frage anhand bspw. Eclipse Java Basics - Anfänger-Themen 4
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
D Instanz einer Subklasse anhand deren Superklasse Java Basics - Anfänger-Themen 5
F Text anhand bestimmter Trennzeichen in Textteile trennen (netbeans) Java Basics - Anfänger-Themen 7
A Rekursion (anhand von Mergesort) nachvollziehen Java Basics - Anfänger-Themen 4
X Bildabschnitt anhand der Farbe und messen Java Basics - Anfänger-Themen 4
U Vererbung Suche Hilfe anhand eines Bsp. Java Basics - Anfänger-Themen 1
P Punkte anhand 3. Koordinate vergleichen Java Basics - Anfänger-Themen 3
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
N kleine get-Methode anhand einer Aufgabenstellung Java Basics - Anfänger-Themen 13
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
S Datentypen Reflection Cast anhand eines Strings? Java Basics - Anfänger-Themen 7
P Key anhand von Value finden (Hashtable) Java Basics - Anfänger-Themen 3
H Anhand von Jar, andere Jar öffnen Java Basics - Anfänger-Themen 7
J Bild anhand von Koordinaten zeichnen Java Basics - Anfänger-Themen 10
H Objekt aus array holen anhand des Objekttypen Java Basics - Anfänger-Themen 8
D Methode anhand deren Name aufrufen Java Basics - Anfänger-Themen 4
S Komposition beispiel anhand eines kopierers Java Basics - Anfänger-Themen 4
R Vergleich von Objekten anhand variierender Kriterien Java Basics - Anfänger-Themen 5
M Umfang von Rechteck oder Kreis anhand der Parameter Java Basics - Anfänger-Themen 2
L rechtecke zeichnen anhand von matrix Java Basics - Anfänger-Themen 27
A Threads anhand eines Tokens abarbeiten Java Basics - Anfänger-Themen 7
G Arrayliste mit Objekt anhand von Strings sortieren Java Basics - Anfänger-Themen 8
O Zugriffskontrolle anhand von IP-Adressbereichen Java Basics - Anfänger-Themen 11
G Elemente in einer ArrayList anhand ID löschen Java Basics - Anfänger-Themen 17
A Objekte in ArrayList anhand Variable sortieren Java Basics - Anfänger-Themen 10
G Auswahl anhand Wahrscheinlichkeiten Java Basics - Anfänger-Themen 5
G Zeichenkette anhand einer anderen Zeichenkette trennen Java Basics - Anfänger-Themen 6
Chucky Rekursion grafisch darstellen anhand eines Applets Java Basics - Anfänger-Themen 14
X Anhand eines Objektnamen ein Objekt finden Java Basics - Anfänger-Themen 11
K Umrechnung Koordinaten zu Winkel Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
L x und y Koordinaten in ein Array schreiben Java Basics - Anfänger-Themen 7
D Input/Output Input von zwei Koordinaten validieren und anschließend Werte speichern Java Basics - Anfänger-Themen 7
CptK Methoden Koordinaten relativ zur Rotation eines Bildes bestimmen Java Basics - Anfänger-Themen 8
H Koordinaten gehen falsch ! Java Basics - Anfänger-Themen 13
F Koordinaten nach 360° auf 0° setzen Java Basics - Anfänger-Themen 2
F Koordinaten umrechnen Java Basics - Anfänger-Themen 10
S Jbuttons an Koordinaten Java Basics - Anfänger-Themen 33
A Klassen Zahlen einlesen, an Klasse übergeben und Koordinaten ausgeben Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Koordinaten transformieren (Rotation) Java Basics - Anfänger-Themen 4
N Problem bei Koordinaten als int? Java Basics - Anfänger-Themen 6
-horn- Einfache graphische Darstellung von 3D Koordinaten für Flugbahnen? Java Basics - Anfänger-Themen 4
L Koordinaten bestimmen Java Basics - Anfänger-Themen 8
P Erste Schritte Koordinaten Zuweisung Java Basics - Anfänger-Themen 6
Dit_ Ich kenne meine Koordinaten. Wo bin ich? Java Basics - Anfänger-Themen 2
J 2d Koordinaten in Array richtig nutzen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
K karthesische Koordinaten Java Basics - Anfänger-Themen 3
Luk10 Images und Koordinaten Java Basics - Anfänger-Themen 4
S Koordinaten der Maus wiedergeben Java Basics - Anfänger-Themen 6
M Problem mit Koordinaten - Objekte werden nicht an gewünschter Stelle gezeichnet Java Basics - Anfänger-Themen 6
N Koordinaten aus Area bekommen? Java Basics - Anfänger-Themen 3
Developer_X Kreiskoordinaten in Normale Koordinaten umrechnen Java Basics - Anfänger-Themen 4
W Koordinaten mit System.in.read() setzen Java Basics - Anfänger-Themen 2
M Cursor Koordinaten ändern Java Basics - Anfänger-Themen 4
K Koordinaten von Swing Komponenten Java Basics - Anfänger-Themen 2
T Koordinaten eines Vektor übergeben Java Basics - Anfänger-Themen 21
H Tooltips und Button Koordinaten Java Basics - Anfänger-Themen 2
K Koordinaten eines 2D-Feldes erstellen Java Basics - Anfänger-Themen 4
F Gibt es eine Datenstruktur für Koordinaten x, y? Java Basics - Anfänger-Themen 8
M Mit Koordinaten, JToolTip auf JPanel darstellen Java Basics - Anfänger-Themen 3
C Koordinaten von Punkten übergeben und zeichnen lassen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben