Hallo,
folgende Situation:
Die Anwendung, welche ich Umsetze funktioniert soweit, wenn ich die Ampel Position sowie die Autoposition berechne,
wennn eine Straße vorhanden ist.
Nun habe ich jedoch eine Kreuzung, und muss die entsprechenden anderen Fahrzeuge mit einberechnen.
Das "Feld" sieht wie folgt aus (siehe Anhang)
zu sehen sind die entsprechenden Ampeln, Fußgängerüberweg, und die Straße.
Fahrzeuge, die von Westen kommen, können den Fahrzeug (aktuell) welcher von Osten kommt ignorieren.
Das gleiche bei Fahrzeugen die von Norden <-> Süden kommen.
Wenn sich der Weg von den Fahrzeugen aus dem Westen kommend, mit denen aus dem Süden kommend kreuzen,
muss ich die Range entsprechend berechnen.
Mein Gedankenansatz, sieht wie folgt aus:
(this. -> gegnerische Fahrzeug, welches zb. vom Süden kommt ; Fahrzeug. -> mein eigenes Fahrzeug, welches zb. vom Westen kommt)
Allerdings klappt dies nicht wie gewünscht.
Hat jemand einen Ansatz/Tipp, wie ich das Problem lösen könnte ?
Gruß und danke!
folgende Situation:
Die Anwendung, welche ich Umsetze funktioniert soweit, wenn ich die Ampel Position sowie die Autoposition berechne,
wennn eine Straße vorhanden ist.
Nun habe ich jedoch eine Kreuzung, und muss die entsprechenden anderen Fahrzeuge mit einberechnen.
Das "Feld" sieht wie folgt aus (siehe Anhang)
zu sehen sind die entsprechenden Ampeln, Fußgängerüberweg, und die Straße.
Fahrzeuge, die von Westen kommen, können den Fahrzeug (aktuell) welcher von Osten kommt ignorieren.
Das gleiche bei Fahrzeugen die von Norden <-> Süden kommen.
Wenn sich der Weg von den Fahrzeugen aus dem Westen kommend, mit denen aus dem Süden kommend kreuzen,
muss ich die Range entsprechend berechnen.
Mein Gedankenansatz, sieht wie folgt aus:
(this. -> gegnerische Fahrzeug, welches zb. vom Süden kommt ; Fahrzeug. -> mein eigenes Fahrzeug, welches zb. vom Westen kommt)
C#-Quellcode
- switch (Fahrzeug.Seite)
- {
- case Speicherverwaltung.Seite.WEST:
- if (Seite == Speicherverwaltung.Seite.EAST)
- return true;
- if (Seite == Speicherverwaltung.Seite.NORD || Seite == Speicherverwaltung.Seite.SOUTH)
- {
- if ((Fahrzeug.FahrzeugY + Fahrzeug.FahrzeugHeight + 5) >= (FahrzeugY - FahrzeugHeight + 5) && (Fahrzeug.FahrzeugY + Fahrzeug.FahrzeugHeight - 5) <= (FahrzeugY - FahrzeugHeight + 5) && (Fahrzeug.FahrzeugX + 5) >= (FahrzeugY + 5) && (Fahrzeug.FahrzeugX - 5) <= (FahrzeugY - 5))
- return false;
- else
- return true;
- }
- if ((FahrzeugX + FahrzeugWidth) <= (Fahrzeug.FahrzeugX + Fahrzeug.FahrzeugWidth + FahrzeugWidth + 5) && (FahrzeugX + FahrzeugWidth) >= (Fahrzeug.FahrzeugX + Fahrzeug.FahrzeugWidth - 10))
- return false;
- else
- return true;
- case Speicherverwaltung.Seite.EAST:
- if (Seite == Speicherverwaltung.Seite.WEST)
- return true;
- if ((FahrzeugX - FahrzeugWidth) >= (Fahrzeug.FahrzeugX - Fahrzeug.FahrzeugWidth - FahrzeugWidth - 5) && (FahrzeugX - FahrzeugWidth) <= (Fahrzeug.FahrzeugX - Fahrzeug.FahrzeugWidth + 10))
- return false;
- else
- return true;
- case Speicherverwaltung.Seite.NORD:
- if (Seite == Speicherverwaltung.Seite.SOUTH)
- return true;
- if ((FahrzeugY + FahrzeugWidth) <= (Fahrzeug.FahrzeugY + Fahrzeug.FahrzeugWidth + FahrzeugHeight + 1) && (FahrzeugY + FahrzeugWidth) >= (Fahrzeug.FahrzeugY + Fahrzeug.FahrzeugWidth - 10))
- return false;
- else
- return true;
- case Speicherverwaltung.Seite.SOUTH:
- if (Seite == Speicherverwaltung.Seite.NORD)
- return true;
- if ((FahrzeugY - FahrzeugWidth) >= (Fahrzeug.FahrzeugY - Fahrzeug.FahrzeugWidth - FahrzeugHeight - 5) && (FahrzeugY - FahrzeugWidth) <= (Fahrzeug.FahrzeugY - Fahrzeug.FahrzeugWidth + 10))
- return false;
- else
- return true;
- default:
- return false;
- }
Allerdings klappt dies nicht wie gewünscht.
Hat jemand einen Ansatz/Tipp, wie ich das Problem lösen könnte ?
Gruß und danke!