电子cIrcuit图组件连接算法

时间:2012-04-24 11:12:24

标签: javascript algorithm electronics circuit-diagram

我正在创建一个网络服务,旨在模拟电子电路如何工作。 project甚至还不在Alpha阶段。

我遇到了项目的一个重要里程碑:当一个人尝试将一个组件的引脚连接到另一个引脚时 - 应该构建连接线。

首先,连接线只是一条直线,几乎无法改变它。

enter image description here

然后它变得有点弯曲,有可能添加,移动和删除点,这决定了线是如何弯曲的。

enter image description here

现在它(连接线)是使用 A * 算法创建的。

enter image description here

实现还不是很好,因此编辑A *生成的连接线并不是一个好主意,因为它会失败很多。

连接线创建算法的想法如下:

  1. 确定开始结束

  2. 找到 start end 之间的路径,该路径不会与任何现有组件的边界框重叠

  3. 创建一组基点 - 一个坐标列表,从堆+ + em>结束时的步骤#2 + start 获得在尾巴

  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));
    }
    
  5. 问题是连接线可能会重叠,而它们必须只相交......好吧,实际上还有另一个问题:我甚至无法想象如何实现连接线连接,就像这里一样,左下图:

    enter image description here

    问题是:我应该如何构建连接路径(使其大部分接近精心设计的电路图,让我们说)以及如何实现原理图连接?

1 个答案:

答案 0 :(得分:1)

首先,此刻我不能给出完整的解决方案,但也许它会有所帮助:

  • 检查graphflow项目,其javascript画布视图构建图形并根据我看到的连接对齐它。这正是电路所需要的(例如,GND符号将只有一个连接的顶点,因此将在模式的边界区域绘制)
  • 应该以某种方式修改该方法,将其放入网格并使所有连接正交
  • 关于“连接路径”它只是一个元素,应该与其他元素对齐。它就像晶体管,但是太小而无法看到所有三个连接器