Blazor入门-svg绘制-碰撞检测和图形坐标调整

上一篇:
Blazor入门-简单svg绘制+导出图像_blazor 画图-CSDN博客
https://blog.csdn.net/pxy7896/article/details/139003443

注意:本文只给出思路和框架,对于具体的计算细节,考虑到日后会写入软件著作权和专利文书,因此不会展示。


问题

上一篇的结尾提到Label重叠问题。事实上,这个问题很严重。

比如我手边这个文件,按照上一篇的方法绘制之后,会变成:(箭头是新画法,也是简单的三角函数,不展开)
在这里插入图片描述
这种重叠不仅让画面变得不美观、杂乱,更是影响了用户的阅读体验。

有的文件直接无法识别:
在这里插入图片描述
这是因为:

  • 某些元件的起终位置有重叠
  • 在某些区域中,元件彼此相隔太近,因此计算出的坐标彼此间距极小,显示到前台就会重叠

解决思路

处理起终位置重叠的元件

首先是对元件做排序,然后识别出有重叠的元件。

目前我采取一种傻瓜式的解决方案,流程是:

  1. 对元件做排序(可以按先起点后终点或者按中点升序排序),获取排序后的列表 L1
  2. 将可以放置元件的区域分成 N 层(实际是 N 层同心圆环),对于 L1 中每个特征,使用下面的分层方法:
    2.1 将第一个特征 f 0 f_0 f0 放入第一层;
    2.2 对于后续特征 f i f_i fi(起始数值分别为 f i s f_{is} fis f i e f_{ie} fie):遍历当前层的空闲位置,如果对于某个空闲位置 p i p_i pi(起始数值分别为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值