本文小編為大家詳細介紹“HTML5怎么實現波的效果”,內容詳細,步驟清晰,細節處理妥當,希望這篇“HTML5怎么實現波的效果”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
一.簡介
波,在空間以特定形式傳播的物理量或物理量的擾動。由于是以特定的形式傳播,這個物理量(或其擾動,下同)成為空間位置和時間的函數,而且是這樣的函數,即在時間t出現在空間r處周圍的分布,會在時間(t+t┡)出現在空間(r+vt┡)的周圍。 v一般說是個常矢量,就是有關物理量(或其擾動)的傳播速度。物理量函數稱為波函數,數學上它是一個叫波動方程的在特定邊界條件下的解。
物理定義:某一物理量的擾動或振動在空間逐點傳遞時形成的運動。不同形式的波雖然在產生機制、傳播方式和與物質的相互作用等方面存在很大差別,但在傳播時卻表現出多方面的共性,可用相同的數學方法描述和處理。
二.實現
波是由無數的點組成,每個點有著自己的運動方向和速度大小。為了實現波的效果,我們首先模擬波上的點:
JavaScript Code復制內容到剪貼板
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var angel = 2 * Math.PI;
var step = Math.PI / 10;
function draw() {
cxt.clearRect(0, 0, 1000, 1000);
for (var i = 0; i < 600; i += 10) {
cxt.fillStyle = randomColor();
cxt.beginPath();
angel -= step;
cxt.arc(i, 100, 7, 0, Math.PI * 2, true);
cxt.closePath();
cxt.fill();
}
}
draw();
function randomColor() {
var arrHex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; var strHex = "#";
var index;
for (var i = 0; i < 6; i++) {
index = Math.round(Math.random() * 15);
strHex += arrHex[index];
}
return strHex;
}
效果如下:
image
然后我們讓波上的每個點回到某一時刻它該回到的位置:
JavaScript Code復制內容到剪貼板
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var angel = 2 * Math.PI;
var step = Math.PI / 10;
function draw() {
cxt.clearRect(0, 0, 1000, 1000);
for (var i = 0; i < 600; i += 10) {
cxt.fillStyle = randomColor();
cxt.beginPath();
angel -= step;
cxt.arc(i, 150 + 100 * Math.cos(angel), 7, 0, Math.PI * 2, true);
cxt.closePath();
cxt.fill();
}
}
draw();
效果如下:
image
然后我們利用Jscex實現動畫效果:
JavaScript Code復制內容到剪貼板
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var angel = 2 * Math.PI;
var step = Math.PI / 10;
function draw() {
cxt.clearRect(0, 0, 1000, 1000);
for (var i = 0; i < 600; i += 10) {
cxt.fillStyle = randomColor();
cxt.beginPath();
angel -= step;
cxt.arc(i, 150 + 100 * Math.cos(angel), 7, 0, Math.PI * 2, true);
cxt.closePath();
cxt.fill();
}
}
var step2 = 0.2;
var waveAsync = eval(Jscex.compile("async", function () {
while (true) { angel = 2 * Math.PI;
angel -= step2;
step2 += 0.1;
$await(Jscex.Async.sleep(100))
draw();
}
}))
waveAsync().start();
讀到這里,這篇“HTML5怎么實現波的效果”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。