這兩天仔細琢磨了一下彈簧粒子的可用性,覺得彈簧粒子并不適用于繪制服務網(wǎng)絡,主要原因有以下幾點:
1、上次您提到對某個中心粒子設置電荷,從而形成放射狀的靜電場,通過和周圍帶電粒子之間的相互作用來實現(xiàn)對服務網(wǎng)絡的模擬。但是據(jù)我所知在彈簧粒子中只能設置垂直方向的重力場和平行的任意方向的靜電場,不能設置放射狀的靜電場,對于如何使粒子帶電還沒有解決。
2、即使通過粒子間靜電作用的模擬完成了放射狀網(wǎng)絡的繪制,但是對于服務關系網(wǎng)絡中另一種重要的視圖:樹形視圖(用于表達抽象服務和具體服務之間的Extend關系)無法用彈簧粒子來實現(xiàn),因為無法構(gòu)造一種物理模型來進行模擬使粒子間構(gòu)成樹形位置關系。
3、目前看到的只是彈簧粒子應用的例子,還沒找到彈簧例子可用的JAR包。
4、彈簧粒子使用APPLET,繪制出來的效果和我們現(xiàn)在使用的JS沒有區(qū)別,不會使圖形效果有很大改觀。微軟的人立方之所以顯示效果很好,原因是它是采用Flash畫圖實現(xiàn)的,跟彈簧粒子沒有任何關系(無論是采用的工具和算法上)。
5、即使說以上條件都能滿足(當然這幾乎不可能),還存在一個重要的問題:效率和資源的問題。首先,彈簧粒子的本質(zhì)是用來做物理仿真,如果我們用來做服務網(wǎng)絡的繪制則只能用到其中的靜力學部分。對于運動效果的模擬雖然我們不會用到,但是在圖形顯示的同時,Applet也會去進行計算,也就是說這樣做實際上相當于為了實現(xiàn)馬車的功能而用馬去拉飛機的輪子,不但不能體現(xiàn)飛機的速度,而且也使馬更加吃力,而問題的關鍵就在于能不能把飛機的輪子拆下來單獨使用,而不是拖著對于我們來說無用而又沉重的機身。要實現(xiàn)這點需要去了解彈簧粒子的具體實現(xiàn),從而剔除掉我們用不到的功能,很顯然這樣做得不償失。其次,Applet的運行時占用資源很大,在彈簧粒子中加入一個10*10的粒子矩陣(沒有加彈簧),就已經(jīng)使得該程序不響應了。這是由于彈簧例子的設計初衷跟繪制網(wǎng)絡迥異而造成的:彈簧粒子是為了模擬少數(shù)粒子和彈簧的物理運動形態(tài),不能也沒必要對上百個粒子進行同時的仿真;而我們的服務網(wǎng)絡卻需要大量節(jié)點的同時展示,從而體現(xiàn)網(wǎng)絡中節(jié)點間的關系。可見二者從設計的初衷講就已經(jīng)背道而馳!另外,采用彈簧粒子必然導致繪圖效率的極其低下,這樣會使得我們之前所做的優(yōu)化工作(采用中間層數(shù)據(jù)庫對本體數(shù)據(jù)庫進行緩存)失去任何意義,因為我們優(yōu)化的目的就是通過避免每次對網(wǎng)絡的操作都要重新進行本體建模來節(jié)約時間。如果采用彈簧粒子來進行網(wǎng)絡圖形繪制,一切對于其它環(huán)節(jié)的優(yōu)化都將是杯水車薪。
另外,我同時也對微軟的“人立方”進行了一些粗略的了解。人立方的原理是通過搜索網(wǎng)頁,通過特定技術自動截取出名字,同多特定事件將相關人物之間聯(lián)系在一起,當關于某人的新聞越多,他能找到的雙關人物就越多,慢慢累積,形成一個“人立方”。人立方的圖形是采用Flash繪制,這點是毋庸置疑的,可見至少從圖形繪制這方面與彈簧粒子的Applet是迥異的。但是可惜的是“人立方”并不是一個開源項目,除了了解它進行數(shù)據(jù)搜集的基本原理,其他我們一無所知(其中最重要的是網(wǎng)絡布局算法)。
posted on 2008-08-19 10:06
胖胖泡泡 閱讀(180)
評論(0) 編輯 收藏