- 积分
- 14736
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 2025-5-27 16:30 编辑
没有看到重叠啊,你得重叠一次我看看.
....
原来如此,是想做标注避让,
首先当你什么想法都没有时候,就去找找基础,
基础是不会骗人的,肯定有数据结构与算法的.
例如:解铃还须解前面一个.
表示先做什么再做什么,什么可以一起做.
那不就是表示,
如果有两个碰撞的标注,你要移动其中一个标注之前,要检查是否碰撞图纸其他标注.
如果有碰撞其他标注,是否又要移动...
这不就是妥妥的 有向无环图DAG 吗!
如果不构成DAG,那么表示有环,全部都有入度,
此时你就没有办法移动任何一个.
不一定存在DAG的,例如你图面完全被填充完成.
只是这个概率非常小.
接着就可以DAG+网格,实现平移就好了.
网格只需要把当前图纸范围想象成1000*1000的格子,
你每次对齐就X或者Y,然后左下右上得移动材质块.
最后再收缩格子,实现聚拢效果.
我建议你用C#去写,
毕竟Lisp怎么写DAG,没有一千也有几百行. |
|