Ich bin dabei, eine "Paint" -Anwendung in Java, bestehend aus rechteckigen Knoten und ungerichteten Kanten zu schreiben. Das Problem ist, dass der Anfang der Kante in der Mitte des Rechtecks liegt, mit dem die Kante verbunden ist, und das Ende der Kante in der Mitte des anderen Rechtecks liegt, mit dem diese Kante verbunden ist.Zeichnen Dinge in der richtigen Reihenfolge, Java
Um zu vermeiden, den Schnittpunkt zwischen dem Rechteck und der Kante zu zeichnen, zeichne ich zuerst Kanten und anschließend Knoten, so dass sie oben auf den Kanten platziert werden, wodurch die Schnittmenge versteckt wird.
Das Problem tritt auf, wenn ein anderer Knoten, der dieser Kante nicht entspricht, entlang der Kante platziert wird. Da in diesem Szenario Kanten zuerst gezeichnet werden, erscheint der Knoten oben auf der Kante. Das will ich aber nicht. Ich möchte, dass die Kante oben auf dem Knoten angezeigt wird.
Bilder: how it is und how it should be
Die umfassendste Weg, ich dieses Problem beheben denken kann wäre Knoten zuerst zu ziehen und danach die Kanten zeichnen, um die Schnittpunkte der Kante mit den beiden Knoten zu vermeiden es verbunden ist, . Allerdings ist das auf dem Papier schwierig, weil ich Kanten unter Verwendung von drawLine
zeichne, und ich habe keine Möglichkeit, nach Überschneidungen zu suchen.
Deshalb zeichne ich zuerst Kanten, aber dann taucht das Problem auf, das ich erwähnte. Irgendwelche Ideen?
Das Problem ist nur lösbar, wenn Knoten so etwas wie eine Priorität haben, dann können Sie sortiert nach Priorität der Knoten zeichnen; Rendern Sie zuerst die Verbindungen des Knotens, und rendern Sie dann den Knoten. Wiederholen Sie den Vorgang für den folgenden Knoten.Wenn es kein Ordnungskriterium gibt, gibt es keine einzige Lösung, die richtig ist - oder vielmehr kann jede Lösung als richtig angesehen werden. – Durandal