這篇文章給大家介紹如何使用p5.js臨摹動態圖形,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、描述所臨摹圖像的規律
1、圖像由多個閃光圓點和圓點之間的連線組成
2、圓點的運動軌跡是隨機的
3、圓點之間靠近時會產生連線,并且相互靠近的圓點會顏色加深
二、代碼實現
圓點之間產生連線,隨機生成線條和運動軌跡:
//隨機生成s.n條線位置信息 for (var t = [], p = 0; s.n > p; p++) { var h = random() * r, //隨機位置 g = random() * n, q = 2 * random() - 1, //隨機運動方向 d = 2 * random() - 1; t.push({ x: h, y: g, xa: q, ya: d, max: 6000 //圓點靠近產生線條的距離 }) }
繪制閃光圓點:
//由三個透明度不同的圓組成 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();
效果圖
因為對于臨摹動態圖像仍有很多困惑的地方,無法實現多個圓點相互靠近顏色加深,非常遺憾最終不能臨摹出完全一樣的圖像。
三、拓展
增加交互性,使得線條能夠附著到鼠標上,跟隨鼠標移動。
鼠標靠近圓點時,圓點會加速運動,
//存儲鼠標位置,離開的時候,釋放當前位置信息 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++) {//從下一個點開始 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; //與鼠標靠近到一定距離的時候圓點加速(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), ... )}
關于如何使用p5.js臨摹動態圖形就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。