2012-04-24 26 views
7

我正在創建一個網絡服務,其目的是模擬電子電路如何工作。 project甚至還沒有在Alpha階段。電子電路圖組件連接算法

我被這個項目的一些重要里程碑所困住:當一個人試圖將一個組件的引腳連接到另一個引腳時 - 應該建立連接線。

首先,連接線只是一條直線,幾乎沒有任何改變它的方法。

enter image description here

再後來不知何故彎曲符合的可能性增加,移動和刪除點,確定了線路是如何彎曲。

enter image description here

現在它(連接線)使用A *算法創建。

enter image description here

的實現沒有很好地還,所以編輯* - 生成的連接線是不是一個好主意,「事業失敗了很多。

的理念,爲連接線的創建算法就是如下:

  1. 確定開始年底

  2. 找到開始年底之間的路徑,其不與任何現有組件的邊界框重疊

  3. 創建一組基點 - 座標表,從步驟#得了2 + 開始在堆+ 在尾

  4. 創建一組將形成一個線連接線:

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

的問題是,連接線可以重疊,而他們只能相交......嗯,其實ŧ這裏還有一個問題:我甚至不能想象一個如何執行連接線連接,喜歡這裏,左下角的圖像:

enter image description here

的問題是:我應該如何建立連接路徑(使其大部分接近設計良好的電路圖,讓我們說),我怎樣才能實現示意圖?

回答

1

首先,在這一刻我不能給整體的解決方案,但也許這將有助於:

  • 檢查graphflow項目,它的JavaScript畫布視圖建立圖表和對齊它基於連接的,因爲我看到的。這正是電路所需要的(fe GND符號將是隻有一個連接的頂點,所以將被繪製在模式的邊界區域)
  • 該方法應該以某種方式修改,將其放入網格並使所有連接正交
  • 關於「連接路徑」,它只是一個元素,應該與其他元素一致。它像晶體管,但太小,看不到所有三個連接器