p5.js臨摹動(dòng)態(tài)圖形的方法
本文實(shí)例為大家分享了p5.js臨摹動(dòng)態(tài)圖形的具體代碼,供大家參考,具體內(nèi)容如下
一、描述所臨摹圖像的規(guī)律
1、圖像由多個(gè)閃光圓點(diǎn)和圓點(diǎn)之間的連線組成
2、圓點(diǎn)的運(yùn)動(dòng)軌跡是隨機(jī)的
3、圓點(diǎn)之間靠近時(shí)會(huì)產(chǎn)生連線,并且相互靠近的圓點(diǎn)會(huì)顏色加深
二、代碼實(shí)現(xiàn)
圓點(diǎn)之間產(chǎn)生連線,隨機(jī)生成線條和運(yùn)動(dòng)軌跡:
//隨機(jī)生成s.n條線位置信息 for (var t = [], p = 0; s.n > p; p++) { var h = random() * r, //隨機(jī)位置 g = random() * n, q = 2 * random() - 1, //隨機(jī)運(yùn)動(dòng)方向 d = 2 * random() - 1; t.push({ x: h, y: g, xa: q, ya: d, max: 6000 //圓點(diǎn)靠近產(chǎn)生線條的距離 }) }
繪制閃光圓點(diǎn):
//由三個(gè)透明度不同的圓組成 context.beginPath(); context.arc(r.x,r.y,1.7,0*Math.PI,2*Math.PI); context.fillStyle="#FF1493"; context.fill(); context.beginPath(); context.arc(r.x,r.y,6,0*Math.PI,2*Math.PI); context.fillStyle='rgba(255,20,147,0.3)'; context.fill(); context.beginPath(); context.arc(r.x,r.y,10,0*Math.PI,2*Math.PI); context.fillStyle='rgba(255,20,147,0.1)'; context.fill();
效果圖
因?yàn)閷?duì)于臨摹動(dòng)態(tài)圖像仍有很多困惑的地方,無法實(shí)現(xiàn)多個(gè)圓點(diǎn)相互靠近顏色加深,非常遺憾最終不能臨摹出完全一樣的圖像。
三、拓展
增加交互性,使得線條能夠附著到鼠標(biāo)上,跟隨鼠標(biāo)移動(dòng)。
鼠標(biāo)靠近圓點(diǎn)時(shí),圓點(diǎn)會(huì)加速運(yùn)動(dòng),
//存儲(chǔ)鼠標(biāo)位置,離開的時(shí)候,釋放當(dāng)前位置信息 window.onmousemove = function(i) { i = i || window.event, f.x = i.clientX, f.y = i.clientY }, window.onmouseout = function() { f.x = null, f.y = null }; for (v = 0; v < w.length; v++) {//從下一個(gè)點(diǎn)開始 x = w[v]; if (i !== x && null !== x.x && null !== x.y) { B = i.x - x.x, z = i.y - x.y, y = B * B + z * z; //與鼠標(biāo)靠近到一定距離的時(shí)候圓點(diǎn)加速(x.max/2<y<x.max) y < x.max && (x == current_point && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), ... )}
結(jié)果圖
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript設(shè)計(jì)模式之策略模式實(shí)例
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之策略模式實(shí)例,本文分析了Jquery源碼并給出了自己的實(shí)現(xiàn),需要的朋友可以參考下2014-10-10給Flash加一個(gè)超鏈接(推薦使用透明層)兼容主流瀏覽器
給一個(gè)Flash加一個(gè)超鏈接,原想直接在object外直接套一個(gè)超鏈接即可,試了之后卻發(fā)現(xiàn)不是這么回事2013-06-06js css+html實(shí)現(xiàn)簡(jiǎn)單的日歷
這篇文章主要為大家詳細(xì)介紹了由html、css、javascript結(jié)合實(shí)現(xiàn)的簡(jiǎn)單日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Js實(shí)現(xiàn)網(wǎng)頁(yè)鍵盤控制翻頁(yè)的方法
這篇文章主要介紹了Js實(shí)現(xiàn)網(wǎng)頁(yè)鍵盤控制翻頁(yè)的方法,較為詳細(xì)的分析了Js實(shí)現(xiàn)網(wǎng)頁(yè)鍵盤控制翻頁(yè)的原理與具體實(shí)現(xiàn)方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10