求流程图、电路图中“智能连线”的算法
如图:
http://john.itwind.net/temp/flow.gif
这种所谓“智能连线”经常可以在流程图、电路图等看到,确定线的起点和终点,自动产生最佳的连线(折线)。
哪位大哥能指教一下,程序应该怎么写?
问题点数:100、回复次数:7Top
1 楼kb1024(漏船载酒)回复于 2003-11-01 22:39:24 得分 0
↑Top
2 楼zzwu(未名)回复于 2003-11-02 13:41:33 得分 100
这一工作通常应该分2步完成:布局和布线。
布局:确定各框或各个器件在平面上的位置和放法;
布线:根据布局以及框与框(或器件-器件)的连线表,来连接它们;
如果没有预先合理的布局,就得不到理想的框图或电路图,不管如何“智能”。
Top
3 楼kb1024(漏船载酒)回复于 2003-11-02 22:48:23 得分 0
感谢未名兄的回复!
我现在的程序已经做好了“布局”的工作,现在正为“布线”的工作而苦恼:D
我的每一根线有一些基本属性,记录它起始于哪个框/器件,终止于哪个框/器件,以前起始/终止于框的哪个部位(框的上边线、下、左右、左上角、右下角等,每个框的四周共有十六个“锚点”可以作线的起点或终点)
根据线的属性(起始于哪个框的哪个锚点,终止于框哪个框的哪个锚点)以前框/器件的坐标,很容易算出线起点/终点的绝对座标,如果是直接连线,很容易就可以实现了!
问题是这种自动并且合理拐角的线该怎么做:DTop
4 楼kb1024(漏船载酒)回复于 2003-11-03 09:47:45 得分 0
↑Top
5 楼zzwu(未名)回复于 2003-11-03 12:43:53 得分 0
1。当然不可以直接连线,否则走线都会画到框上或电路器件上了。
2。为了布线,你必须分析平面上不画器件的、可以走线的空白区域。
3。通常,应尽可能将器件排列成阵列,使器件-器件之间形成纵横的“通道”。
4。这样,当布局完成后,接下来是在通道内进行布线。
5。通道内的布线又分2步:
* 总体布线:确定每一根走线从起点到终点要经过哪些水平和垂直通道;
* 通道布线:在每个通道内确定各走线的具体位置。
Top
6 楼kb1024(漏船载酒)回复于 2003-11-03 13:08:01 得分 0
不考虑走线过程中碰到其他元件绕行的问题,只要绕行起始元件和终止元件就可以了。Top
7 楼zzwu(未名)回复于 2003-11-03 16:37:43 得分 0
但这样的制作的图,完全不符合人们通常的制图习惯了,也非常难看,还可能引起混淆。
Top




