Ich erstelle einen Web-Service, der auf simuliert wird wie funktionieren elektronische Schaltungen. Die project ist noch nicht einmal in der Alpha-Phase.Electronic cIcuit Diagramm Komponente Verbindung Algorithmus
Ich stecke mit einem wichtigen Meilenstein des Projekts fest: Wenn man versucht, den Pin einer Komponente mit einem anderen Pin zu verbinden - sollte die Verbindungslinie gebaut werden.
Zunächst war die Verbindungslinie nur eine gerade Linie, ohne fast jede Möglichkeit, es zu ändern.
Dann wurde es irgendwie gebogene Linie mit der Möglichkeit, hinzufügen, verschieben und löschen Punkte, das bestimmt, wie die Linie gebogen wird.
Und jetzt ist es (Verbindungsleitung) erstellt mit dem A * Algorithmus.
Die Umsetzung noch nicht gut ist, so A * -Generated Verbindungsleitung Bearbeitung ist keine gute Idee, weil es eine Menge ausfällt.
Die Idee für die Schaffung Algorithmus Verbindungsleitung ist wie folgt:
Start und Ende Punkte
einen Weg zwischen Start und Ende finden bestimmen, die sich nicht mit der Begrenzungsbox einer vorhandenen Komponente überschneidet
einen Satz von Fußpunkte erstellen - eine Liste von Koordinaten, erhielt aus dem Schritt # 2 + Start am Heap + Ende am Heck
einen Satz von Linien erzeugen, die einen bilden Anschlussleitung:
for (var i = 1; i < points.length; i++) { var p0 = points[i - 1], p1 = points[i], line = MooChip.paper.path(Raphael.format('M%1,%2L%3,%4', p0.x, p0.y, p1.x, p1.y)); }
Das Problem ist, dass Anschlussleitungen könnten überlappen, während sie nur schneiden müssen ... Nun, eigentlich t hier ist ein weiteres Problem: Ich konnte nicht einmal vorstellen, wie eine Anschlussleitung Verbindung implementieren könnte, wie hier, die unten links Bild:
Die Frage ist: wie soll ich den Verbindungsweg bauen (um es zum größten Teil dem gut entworfenen Schaltplan zu nähern, sagen wir) und wie kann ich schematische Übergänge implementieren?