2012-04-24 5 views
7

Sto creando un servizio web che è diretto a simulare come funzionano i circuiti elettronici. Lo project non è ancora nella fase Alpha.Algoritmo di collegamento dei componenti elettronici diagramma di flusso

Sono bloccato con alcune pietre miliari importanti del progetto: quando si tenta di collegare il pin di un componente a un altro pin, è necessario creare la linea di connessione.

Prima di tutto, la linea di connessione era solo una linea retta, senza quasi alcuno modo di cambiarla.

enter image description here

poi è diventato in qualche modo piegato linea con la possibilità di aggiungere, spostare e cancellare i punti, che ha determinato come la linea è piegato.

enter image description here

E ora (linea di connessione) viene creata usando l'A * algoritmo.

enter image description here

L'implementazione non è ben ancora, quindi la modifica di una linea di collegamento * -Generata non è una buona idea, perche' non riesce molto.

L'idea per l'algoritmo di creazione della linea di collegamento è proprio come segue:

  1. determinare inizio e fine punti

  2. trovare un percorso tra inizio e fine, che non si sovrappone al riquadro di delimitazione di qualsiasi componente esistente

  3. creare un insieme di punti base - un elenco di coordinate, ottenuto dal passo # 2 + inizio il mucchio + fine in coda

  4. creare un insieme di linee che formeranno una linea di collegamento:

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

Il problema è che linee di collegamento potrebbero sovrapporsi, mentre loro devono intersecarsi solo ... Beh, in realtà t qui è un altro problema: non ho potuto nemmeno immaginare quanto come qui, l'immagine in basso a sinistra si potrebbe implementare il collegamento linee di collegamento,:

enter image description here

La domanda è: come devo costruire il percorso di connessione (per renderlo per lo più vicino allo schema circuitale ben progettato, diciamo) e come posso implementare giunzioni schematiche?

risposta

1

In primo luogo, in questo momento non posso dare soluzioni integrali, ma forse aiuterà:

  • controllo graphflow progetto, la sua vista canvas javascript costruisce il grafico e si allinea sulla base di connessioni come la vedo io. Questo è esattamente ciò che è necessario per i circuiti (il segno GND sarà il vertice con una sola connessione, quindi verrà disegnato alla regione limite dello schema)
  • tale approccio dovrebbe essere modificato in qualche modo con la messa in griglia e rendendo tutte le connessioni ortogonali
  • su "percorso di connessione" è solo un elemento in più e deve essere allineato come gli altri. È come transistor, ma troppo piccolo per vedere tutti e tre i connettori