rrickfox / traffic-sim

GNU General Public License v3.0
2 stars 0 forks source link

access section from anchor #26

Closed rrickfox closed 4 years ago

funketh commented 4 years ago

Diskussion mit @Shafma ergab, dass es einige generelle Konflikte zwischen den Anforderungen an die Datenstruktur seitens des Pathfindings (#9) und seitens der graphischen Umsetzung gibt.

rrickfox commented 4 years ago

Was wäre denn ein Beispiel für diese Konflikte?

funketh notifications@github.com schrieb am Di., 21. Jan. 2020, 22:43:

Diskussion mit @Shafma https://github.com/Shafma ergab, dass es einige generelle Konflikte zwischen den Anforderungen an die Datenstruktur seitens des Pathfindings (#9 https://github.com/rrickfox/traffic-sim/issues/9) und seitens der graphischen Umsetzung gibt.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rrickfox/traffic-sim/issues/26?email_source=notifications&email_token=AHOLDJ4BC3ADBIURSZRQ5XDQ65UARA5CNFSM4KJSVFS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJRL3YA#issuecomment-576896480, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHOLDJ2GI6GJ5H3G35A4UXLQ65UARANCNFSM4KJSVFSQ .

Shafma commented 4 years ago

Die Anchor sind zwar schön, aber für's Pathfinding (#9) relativ ungünstig und beinhalten Redundanzen (siehe dieses Issue). Außerdem machen wir uns Sorgen um eventuelle Implikationen für die Implementierung von Einbahnstraßen, die das gesamte Konzept des Graphen sprengen.

funketh commented 4 years ago

Bild zum Problem hier und hier EDIT: und hier bzw. hier

rrickfox commented 4 years ago

Ich sehe das Problem der Redundanzen, allerdings nicht die unnutzbarkeit für das Pathfinding und das Problem der Einbahnstraßen. Bei denen wäre es ja eben genau gut zu wissen, wie viele Spuren es im Anchor gibt...

Shafma notifications@github.com schrieb am Di., 21. Jan. 2020, 22:49:

Die Anchor sind zwar schön, aber für's Pathfinding (#9 https://github.com/rrickfox/traffic-sim/issues/9) relativ ungünstig und beinhalten Redundanzen (siehe dieses Issue). Außerdem machen wir uns Sorgen um eventuelle Implikationen für die Implementierung von Einbahnstraßen, die das gesamte Konzept des Graphen sprengen.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rrickfox/traffic-sim/issues/26?email_source=notifications&email_token=AHOLDJ7COQ3DU2IRMYFYHM3Q65UYJA5CNFSM4KJSVFS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJRMO2A#issuecomment-576898920, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHOLDJ2LNEP4W53LGIMH4XTQ65UYJANCNFSM4KJSVFSQ .

funketh commented 4 years ago

Erstmal ne Feststellung: Anchors sind eklig, weil sie in beide Richtungen funktionieren müssen

Dann: Die Probleme liegen beim Pathfinding. Für das Pathfinding ist die Kreuzung 1 Knoten und jede Straße 1 ungerichtete Kante. D.h. es gibt bei Einbahnstraßen keinen Weg zu wissen, ob die Straße nur zur Kreuzung hinführt oder nur von ihr wegführt. Es wird immer angenommen, das beides geht.

Die Lösung wäre offensichtlicherweise, dass man pro Straße in beide Richtungen ne gerichtete Kante unabhängig voneinander speichert, aber bei Einbahnstraßen halt stattdessen nur 1 gerichtete Kante nutzt. Das Problem wäre dabei, dass die Straße in der Simulation als eine einzige angezeigt werden soll.

Unsere Idee wäre dann gewesen, dass man immer 2 entgegengesetzte Kanten, die nebeneinander sind, (oder im Falle der Einbahnstraße nur 1 Kante) nochmal zusätzlich in einem Straßenobjekt zusammenfasst. Dieses Objekt würde sich dann nur um das graphische Anzeigen als einheitlich Straße kümmern und würde dazu noch die Form der Straße speichern. (Wahrscheinlich bräuchten die Kanten dann noch ne Referenz zu ihrem Straßenobjekt, aber ist ja auch ok)

So weit, so gut. Eine CrossSection müsste also für ihre obere Straße nur die beiden Edges upEdgeIncoming und upEdgeOutgoing speichern. Die gerichteten Edges müssten nur ne startingSection und ne endingSection speichern. Jetzt haben wir aber wieder ein Problem mit der Grafik. Für die brauchen wir jetzt nämlich noch konkrete Punkte. Ansatz dafür:

Ich glaube ich habe das Problem mehr oder weniger beim aufschreinen schon gelöst, muss meinen Ansatz morgen einfach mal ausprobieren. Hauptpunk ist eigentlich, dass Anchor in der jetzigen Form abgeschafft werden und Straßen zu 1 bis 2 entgegengerichteten Kanten werden (die trotzdem zusätzlich fürs graphische zusammengefasst werden).

On Tue, 21 Jan 2020, 23:02 Richard Fuchs, notifications@github.com wrote:

Ich sehe das Problem der Redundanzen, allerdings nicht die unnutzbarkeit für das Pathfinding und das Problem der Einbahnstraßen. Bei denen wäre es ja eben genau gut zu wissen, wie viele Spuren es im Anchor gibt...

Shafma notifications@github.com schrieb am Di., 21. Jan. 2020, 22:49:

Die Anchor sind zwar schön, aber für's Pathfinding (#9 https://github.com/rrickfox/traffic-sim/issues/9) relativ ungünstig und beinhalten Redundanzen (siehe dieses Issue). Außerdem machen wir uns Sorgen um eventuelle Implikationen für die Implementierung von Einbahnstraßen, die das gesamte Konzept des Graphen sprengen.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub < https://github.com/rrickfox/traffic-sim/issues/26?email_source=notifications&email_token=AHOLDJ7COQ3DU2IRMYFYHM3Q65UYJA5CNFSM4KJSVFS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJRMO2A#issuecomment-576898920 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/AHOLDJ2LNEP4W53LGIMH4XTQ65UYJANCNFSM4KJSVFSQ

.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/rrickfox/traffic-sim/issues/26?email_source=notifications&email_token=AK3W7LVRLIKYKYLDAALOJYLQ65WITA5CNFSM4KJSVFS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJRN3YA#issuecomment-576904672, or unsubscribe https://github.com/notifications/unsubscribe-auth/AK3W7LT3JBMA7DVXQ75G4KTQ65WITANCNFSM4KJSVFSQ .

funketh commented 4 years ago

Ansatz, bei dem man keine Anchor braucht:

 class Road
{
    public Dictionary<Vertex, List<Lane>> startingLanes;
    protected Dictionary<Vertex, Vertex> vertices;
    public float length;
    public RoadShape shape;

    public Vertex OtherVertex(Vertex fromVertex)
    {
        return vertices[fromVertex];
    }
}

in vertices sind die mappings vertex1 => vertex2 sowie vertex2=> vertex1 enthalten. Koordinaten fehlen noch, aber die kann man auch wie die Lanes speichern.

rrickfox commented 4 years ago

Wir sollten diese Diskussion in #20 weiterführen.