StupidBeauty
Read times:614Posted at:Sat Dec 1 18:35:48 2012
- no title specified

Flare中BundledEdgeRouter类的正确使用

BundledEdgeRouter类 可用 将图中的边“绑”起来 ,也就是让那些边在分叉附近更集中,然后发散开,形成曲线,而不是赤裸裸的直线。 可看一下Flare的示例程序中那个“Dependency graph”示例,里面就用BundledEdgeRouter将线绑了起来,否则都是直线的话看着狠乱。看看 截图 ,感觉就像电工布线时把线绑在一起一样

本座在最近的这个数据可视化项目中,曾经也尝试这样做,可惜由于 是初学FLEX 和Flare,没有领悟到这两个东西的精妙之处,所以当时没弄出这种绑线的效果,暂时放弃了。

昨天 在小结的时候,翻译了BundledEdgeRouter的文档, 在一句句阅读了文档,并且做了实验之后,知道这个东西该怎么用了。

BundledEdgeRouter 要求关联 到一个图(Flare里用Data类来表示)上 ,而不是关联到一棵树上 ,并且要求这个图上定义了一棵生成树(Flare里用Tree类表示树)。 在这里 ,对于本座来说的关 之处就是, 所关联的这个图应当是一个图,而不是严格的树,也就是说,图里最少要有两个节点之间存在两条以 的路径 。图要满足这个条件,才会有边被绘制成曲线,否则所有 的边仍然是直线。 本座最初使用的时候,所提供的图本身是一棵严格的树, 任何两个节点之间只有一条路径,结果绘制出来 的可视 化结果中所有边都是直的。 看下面这两个 就明白了 ,左边的图是一棵严格的树,右边的图中存在多对 有两条以上路径的节点 ,所以左边的图都是直线,右边的图里有些边被“绑线”搞成了曲线

本座大概看了 一下BundledEdgeRouter类的源代码 ,对于两个节点之间直接连 接的那条边,会以其它路径(至于存在 多条候选路径时选择哪一条,本座没研究 )中的节点作为该边的基样条曲线 (叫B样条曲线的话,妳可能更熟悉) 的控制点 这样,当两个距离为1的节点之间只存在一条路径时,这条路径自然就是连接它们的那条边了,由于不存在其它路径,所以这条边的基样条曲线没有其它的控制点 (只有起点和终点,也就是两个节点本身) ,于是就退化成一条直线了。于是 本座提供的那个严格是一棵树的图就被绘制成全部直线的边了。

如果实际 要绘制的图实在是一棵严格的树,那怎么办呢?人为加些不可见的边, 以产生出一些冗余路径吧。

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4