一路拾遗
Collect By Finding All The Way ......
posts - 81,comments - 41,trackbacks - 0
这两天仔细琢磨了一下弹簧粒子的可用性,觉得弹簧粒子并不适用于绘制服务网络,主要原因有以下几点:
1、上次您提到对某个中心粒子设置电荷,从而形成放射状的静电场,通过和周围带电粒子之间的相互作用来实现对服务网络的模拟。但是据我所知在弹簧粒子中只能设置垂直方向的重力场和平行的任意方向的静电场,不能设置放射状的静电场,对于如何使粒子带电还没有解决。
2、即使通过粒子间静电作用的模拟完成了放射状网络的绘制,但是对于服务关系网络中另一种重要的视图:树形视图(用于表达抽象服务和具体服务之间的Extend关系)无法用弹簧粒子来实现,因为无法构造一种物理模型来进行模拟使粒子间构成树形位置关系。
3、目前看到的只是弹簧粒子应用的例子,还没找到弹簧例子可用的JAR包。
4、弹簧粒子使用APPLET,绘制出来的效果和我们现在使用的JS没有区别,不会使图形效果有很大改观。微软的人立方之所以显示效果很好,原因是它是采用Flash画图实现的,跟弹簧粒子没有任何关系(无论是采用的工具和算法上)。
5、即使说以上条件都能满足(当然这几乎不可能),还存在一个重要的问题:效率和资源的问题。首先,弹簧粒子的本质是用来做物理仿真,如果我们用来做服务网络的绘制则只能用到其中的静力学部分。对于运动效果的模拟虽然我们不会用到,但是在图形显示的同时,Applet也会去进行计算,也就是说这样做实际上相当于为了实现马车的功能而用马去拉飞机的轮子,不但不能体现飞机的速度,而且也使马更加吃力,而问题的关键就在于能不能把飞机的轮子拆下来单独使用,而不是拖着对于我们来说无用而又沉重的机身。要实现这点需要去了解弹簧粒子的具体实现,从而剔除掉我们用不到的功能,很显然这样做得不偿失。其次,Applet的运行时占用资源很大,在弹簧粒子中加入一个10*10的粒子矩阵(没有加弹簧),就已经使得该程序不响应了。这是由于弹簧例子的设计初衷跟绘制网络迥异而造成的:弹簧粒子是为了模拟少数粒子和弹簧的物理运动形态,不能也没必要对上百个粒子进行同时的仿真;而我们的服务网络却需要大量节点的同时展示,从而体现网络中节点间的关系。可见二者从设计的初衷讲就已经背道而驰!另外,采用弹簧粒子必然导致绘图效率的极其低下,这样会使得我们之前所做的优化工作(采用中间层数据库对本体数据库进行缓存)失去任何意义,因为我们优化的目的就是通过避免每次对网络的操作都要重新进行本体建模来节约时间。如果采用弹簧粒子来进行网络图形绘制,一切对于其它环节的优化都将是杯水车薪。
另外,我同时也对微软的“人立方”进行了一些粗略的了解。人立方的原理是通过搜索网页,通过特定技术自动截取出名字,同多特定事件将相关人物之间联系在一起,当关于某人的新闻越多,他能找到的双关人物就越多,慢慢累积,形成一个“人立方”。人立方的图形是采用Flash绘制,这点是毋庸置疑的,可见至少从图形绘制这方面与弹簧粒子的Applet是迥异的。但是可惜的是“人立方”并不是一个开源项目,除了了解它进行数据搜集的基本原理,其他我们一无所知(其中最重要的是网络布局算法)。
posted on 2008-08-19 10:06 胖胖泡泡 阅读(178) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: