通過上面顯示的效果圖,可以看出,這種效果就是在canvas中生成多個可移動的點,然後根據點之間的距離來確定是否連線,思路比較簡單。
實現問題:
html:
id="main">
canvas>
css:
#main
這裡主要用到的形狀就是circle
和line
,先引入這兩個元件:
['zrender',
'zrender/graphic/shape/circle',
'zrender/graphic/shape/line'],
function
(zrender, circle, line){}
var winh = window.innerheight; //同步頁面寬、高
var winw = window.innerwidth; //同步頁面寬、高
var opts = ;
var tid; //settimeout id,防抖處理
var particals = ; //用於儲存partical物件
var zr= zrender.init(main, );
zr.dom.style.backgroundcolor = opts.background; //設定背景色
window.addeventlistener('resize', function
(), 300); //這裡設定了300ms的防抖間隔
}, false);
效果:
總結一下這個類,需要以下屬性:
方法:這邊直接用es6的語法來建立類:
class partical {}
構造器:
constructor()
this.element = new circle(,
style:
});};
更新位置座標方法:
updateposition()
if(this.y >= winh || this.y <= 0)
if(this.x > winw)
if(this.x < 0)
if(this.y > winh)
if(this.y < 0)
//更新位置座標
this.x += this.vector.x;
this.y += this.vector.y;
//更新形狀座標
this.element.shape.cx = this.x;
this.element.shape.cy = this.y;
this.element.dirty();
};
劃線方法:
drawlines()
this.lines = ; //刪除後,清空陣列
//遍歷各個點之間的距離
for(let i = 0; i < particals.length; i ++),
style: ,
});this.lines.push(l); //存入lines
zr.add(l); //加入zrender storage中}};
}
目前所有核心部分已完成,現在來初始化它:
var init = function
()};
效果:
開始動畫函式,讓粒子動起來,並生成連線線:
function
loop
() window.requestanimationframe(loop);
};
最終效果:
lang="en">
charset="utf-8">
documenttitle>
CAEmitterLayer實現粒子效果
caemitterlayer實現粒子效果 caemitterlayer 在ios 5中,蘋果引入了乙個新的 calayer 子類叫做 caemitterlayer caemitterlayer 是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果。caemitterlayer ...
粒子濾波實現物體跟蹤
粒子濾波實現物體跟蹤的演算法原理 1 初始化階段 提取跟蹤目標特徵 該階段要人工指定跟蹤目標,程式計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。具體到rob hess的 開始時需要人工用滑鼠拖動出乙個跟蹤區域,然後程式自動計算該區域色調 hue 空間的直方圖,即為目標的特徵。直方圖可以用乙個向量來...
粒子群演算法python實現
1 概述 粒子群演算法作為一種優化演算法,在很多領域都有應用。所謂優化,我的理解是對乙個問題求出它足夠好的解,目前的優化演算法有很多,如蟻群演算法 遺傳演算法等。粒子群演算法相對於這些演算法來說,它更簡單,而且有很快的收斂速度。2 演算法描述 舉乙個優化問題的例子,若求 粒子群演算法思想 於實際生活...