2012-04-24 12 views
7

Tworzę serwis internetowy, który ma na celu symulować jak działają układy elektroniczne. project nie jest jeszcze na etapie Alpha.Elektroniczny algorytm łączenia komponentów diagramu

Utknąłem z ważnym kamieniem milowym projektu: kiedy próbuje się podłączyć pin jednego komponentu do innego pinezki - należy zbudować linię łączącą.

Po pierwsze, linia połączenia była po prostu linią prostą, bez prawie żadnego sposobu na jej zmianę.

enter image description here

Wtedy stało się jakoś wygięta linia z możliwością dodać, przenoszenie i usuwanie punktów, które wyznaczały jak linia jest wygięta.

enter image description here

A teraz (linia połączenia) jest tworzony za pomocą algorytmu * A.

enter image description here

Realizacja nie jest jeszcze dobrze, więc edytowania * -generated linię połączenia nie jest dobrym pomysłem, bo to nie dużo.

Pomysł na algorytm tworzenia linii połączenie jest po prostu w następujący sposób:

  1. określić rozpoczęcia i koniec punktów

  2. znaleźć ścieżkę między początku i koniec, która nie nakłada się na żadną istniejącą część składową "ramka ograniczająca"

  3. utworzyć zestaw punktów bazowych - wykaz współrzędnych, dostał od kroku # 2 + rozpoczęcia na stercie + koniec w ogonie

  4. utworzyć zestaw linii, które będą stanowić linia gra:

    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)); 
    } 
    

problemem jest to, że przewody przyłączeniowe mogłyby nakładać, gdy muszą się przecinać tylko ... No, rzeczywiście t tu jest inny problem: nie mogłem sobie nawet wyobrazić, jak można realizować połączenia przewodów przyłączeniowych, jak tutaj, obraz bottom-left:

enter image description here

Pytanie brzmi: jak należy budować ścieżkę połączenia (aby zrobić to w większości blisko dobrze zaprojektowanego schematu obwodu, powiedzmy) i jak mogę zaimplementować schematyczne skrzyżowania?

Odpowiedz

1

Po pierwsze, w tej chwili nie mogę dać całych rozwiązań, ale może to pomoże:

  • Skontrolować graphflow projektu, jego JavaScript Zobacz płótno buduje wykres i wyrównuje je na podstawie połączeń jak widzę. Dokładnie to jest potrzebne do obwodów (np. Znak GND będzie wierzchołkiem z tylko jednym połączeniem, więc zostanie narysowany w regionie granicy schematu)
  • to podejście powinno zostać zmodyfikowane w jakiś sposób poprzez umieszczenie go w siatce i uczynienie wszystkich połączeń prostopadłymi
  • o "ścieżce połączenia" to tylko jeden element i powinny być wyrównane jak inne. To jest jak tranzystor, ale zbyt mały, aby zobaczyć wszystkie trzy złącza
Powiązane problemy