java生成SVG无重叠少交点配电图算法,svg层级连线

接口需求介绍

通过接口算法生成SVG连线图,成图布局满足连线的少交叉和不重叠,尽可能美观,清晰展示出连线关系,图形保持一定的长款比例,全屏显示时充满挣个屏幕。

示意图如下:
在这里插入图片描述
经过查阅了好多资料,发现全部都是理论,论文等,真的是小弟才学疏浅看不懂,学不会,只能磕磕绊绊的一点点用自己的办法扣出来ಥ_ಥ,如果有什么好的办法可以指导下小弟,谢谢

开发前的想法

  1. 首先先了解一下 < svg> ,java代码是拼接svg的语句输出字符串到页面中。
  2. 上述图片看到的内容,我们可以看到我们需要的数据是哪些,一个方块的对象主体,以及他的联络关系及层级。
  3. 最下面为一级,他固定且唯一,但是他宽度,要根据第二层的数量进行计算。
  4. 第二层和第一层是直连,他的关系摆放也无需去考虑。
  5. 第三层和第二层的折线连接,便需要计算,再对其数据进行最优的摆放关系。
  6. 第三层和第二层的折线链接,要计算出口,入口,及对象前经过了其他的线路。

开发思路

  1. 我们通过面向对象的方式,把每一个方块[业务数据主体],创建一个对象,他的属性有名称连线关系,方块,连线,折线的计算后的x,y轴对象,
  2. 拿到基础数据之后,我们通过步骤去进行
    • 对源数据进行分组,封装成计算方式。
    • 整体的布局策略,居中排列。
    • 开始构建布局,对二层连接关系少的升序排列,然后就第三层,第三层的排列计算方式,我是根据每一个对象再每一个位置坐标下,进行连线的距离作为判断依据,然后把第三层最优的占位距离进行分配第三层的下标。
    • 第三层连线,计算每个三层和二层的出入口,相同下标的总出入口作为x轴的间隔,y轴的间隔根据所有的连线计算总高度相除,获取高度间隔。

进行测试<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑吧_joe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值