我正在创建一个网络服务,旨在模拟电子电路如何工作。 project甚至还不在Alpha阶段。
我遇到了项目的一个重要里程碑:当一个人尝试将一个组件的引脚连接到另一个引脚时 - 应该构建连接线。
首先,连接线只是一条直线,几乎无法改变它。
然后它变得有点弯曲,有可能添加,移动和删除点,这决定了线是如何弯曲的。
现在它(连接线)是使用 A * 算法创建的。
实现还不是很好,因此编辑A *生成的连接线并不是一个好主意,因为它会失败很多。
连接线创建算法的想法如下:
确定开始和结束点
找到 start 和 end 之间的路径,该路径不会与任何现有组件的边界框重叠
创建一组基点 - 一个坐标列表,从堆+ + em>结束时的步骤#2 + start 获得在尾巴
创建一组将形成连接线的行:
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));
}
问题是连接线可能会重叠,而它们必须只相交......好吧,实际上还有另一个问题:我甚至无法想象如何实现连接线连接,就像这里一样,左下图:
问题是:我应该如何构建连接路径(使其大部分接近精心设计的电路图,让我们说)以及如何实现原理图连接?
答案 0 :(得分:1)
首先,此刻我不能给出完整的解决方案,但也许它会有所帮助: