日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTML > 正文

canvas三角函數(shù)模擬水波效果的示例代碼

2024-08-26 00:20:48
字體:
供稿:網(wǎng)友

最近項(xiàng)目中,ui設(shè)計(jì)了個水波效果的背景動畫,然而并沒有g(shù)if或svg動畫,開始試著用css實(shí)現(xiàn)了一下,動畫效果并不是很好,網(wǎng)上查了下基本都是用貝賽爾曲線實(shí)現(xiàn),想起以看的各種前波形圖,于是想著用三角函數(shù)圖像初略模擬一下

一、繪制sin函數(shù)圖像

sin函數(shù)表達(dá)式如下,

y=Asin(wx+φ)+h

其中 A表示振幅,ω表示角頻率(ω=2π/T,T為函數(shù)的周期),φ表示初相,h表示圖像向y軸正方向平移的長度 ;(這里需要注意一下:h在數(shù)學(xué)學(xué)的本來是表示向上平移的,但在canvas中采用的是屏幕坐標(biāo)系,即左上角為原點(diǎn),h則表示向下平移);

繪制代碼如下:

(1)添加canvas標(biāo)簽

<canvas id="canvas"></canvas>

(2)添加css樣式,設(shè)置canvas寬高

html,body {  padding: 0;  margin: 0;  width: 100%;  height: 100%;}canvas {  width: 100%;  height: 100%;}

(3)繪制函數(shù)圖像

var canvas = document.getElementById("canvas"),    ctx = canvas.getContext('2d'),    width = canvas.width = canvas.offsetWidth,    height = canvas.height = canvas.offsetHeight;//聲明參數(shù)var A=50,    W=1 / 50,    Q=0,    H= height / 2;//繪圖方法(function draw(){  ctx.clearRect(0, 0, width, height);//清空畫布  ctx.beginPath();                   //開始路徑  ctx.strokeStyle="#000";            //設(shè)置線條顏色  ctx.lineWidth = 1;                 //設(shè)置線條寬度  ctx.moveTo(0, height /2);          //起始點(diǎn)位置  for (let x = 0; x <=  width; x++) {// 繪制x對應(yīng)y的     var y = A*Math.sin(W*x+Q) +H    ctx.lineTo(x, y)  }  ctx.stroke();                      //繪制路徑  ctx.closePath();                   //閉合路徑})()

這樣我們可以得到以下圖像:

canvasm,三角函數(shù),代碼

二、為函數(shù)圖像添加動畫

上面得到的是是一個靜態(tài)的函數(shù)圖像,而我們一般見到的的波形圖或水波都是隨時間連續(xù)變化的,這里就要用到上一步中的參數(shù)相位φ,(js即代碼中的Q) ,我們將φ隨時間不斷增加或減小,即可得到不同時間的不同圖像;使用window.requestAnimationFrame實(shí)現(xiàn)幀動畫;

修改以上代碼為:

var canvas = document.getElementById("canvas"),    ctx = canvas.getContext('2d'),    width = canvas.width = canvas.offsetWidth,    height = canvas.height = canvas.offsetHeight;//聲明參數(shù)var A=50,    W=1 / 50,    Q=0,    H= height / 2;//繪圖方法(function draw(){  ctx.clearRect(0, 0, width, height);//清空畫布  ctx.beginPath();                   //開始路徑  ctx.strokeStyle="#000";            //設(shè)置線條顏色  ctx.lineWidth = 1;                 //設(shè)置線條寬度  ctx.moveTo(0, height /2);          //起始點(diǎn)位置  for (let x = 0; x <=  width; x++) {// 繪制x對應(yīng)y的     var y = A*Math.sin(W*x+Q) +H    ctx.lineTo(x, y)  }  ctx.stroke();                      //繪制路徑  ctx.closePath();                   //閉合路徑})()

效果如下(渣渣截圖軟件):

canvasm,三角函數(shù),代碼

三、繪制完整填充路徑

以上路徑雖有閉合,但卻不滿足我們需要填充的部分,直接填充效果如下:

canvasm,三角函數(shù),代碼

完整填充路徑應(yīng)如圖所示:

canvasm,三角函數(shù),代碼

閉合路徑后創(chuàng)建一個漸變顏色,作為填充顏色,代碼如下:

var lingrad = ctx.createLinearGradient(0,0,width,0); lingrad.addColorStop(0, 'rgba(0,186,128,0.8)'); lingrad.addColorStop(1, 'rgba(111,224,195,1)');   (function draw(){  window.requestAnimationFrame(draw);  ctx.clearRect(0, 0, width, height);  ctx.beginPath();  ctx.strokeStyle="#000";  ctx.fillStyle = lingrad;  ctx.lineWidth = 1;  ctx.moveTo(0, height /2);    Q+=speed;  for (let x = 0; x <=  width; x++) {    var y = A*Math.sin(W*x+Q) +H;    ctx.lineTo(x, y);  }  ctx.lineTo(width, height);  ctx.lineTo(0, height);  ctx.fill();  ctx.closePath();})()

效果如下:

canvasm,三角函數(shù),代碼

四、完善水波動畫

1、首先可以對上面波形疊加一個頻率更高的波形,使波形無規(guī)矩

var s = 0.1*Math.sin(x/150)+1;var y = A*Math.sin(W*x+Q) +H;y=y*s;

2、再添加一個相位變化不同的波形,其漸變填充與上一個漸變方向相反使其形成相互重疊的陰影效果;并設(shè)置路徑重疊效果globalCompositeOperation; 

var canvas = document.getElementById("canvas"),   ctx = canvas.getContext('2d'),   width = canvas.width = canvas.offsetWidth,   height = canvas.height = canvas.offsetHeight;var A=30,   W=1 /200,   Q=0,   H= height / 2;var A2=30,   W2=1/300,   Q2=0,   H2= height / 2;var speed=-0.01;var speed2=-0.02;var lingrad = ctx.createLinearGradient(0,0,width,0);lingrad.addColorStop(0, 'rgba(0,186,128,0.8)');lingrad.addColorStop(1, 'rgba(111,224,195,1)');  var lingrad2 = ctx.createLinearGradient(0,0,width,0);lingrad2.addColorStop(0,'rgba(111,224,195,1)');lingrad2.addColorStop(1, 'rgba(0,186,128,0.8)'); (function draw(){  window.requestAnimationFrame(draw);  ctx.clearRect(0, 0, width, height);  ctx.beginPath();  ctx.fillStyle = lingrad;  ctx.moveTo(0, height /2);  //繪制第一個波形  Q+=speed;  for (let x = 0; x <=  width; x++) {    var s = 0.1*Math.sin(x/150)+1;    var y = A*Math.sin(W*x+Q) +H;    y=y*s;    ctx.lineTo(x, y);  }  ctx.lineTo(width, height);  ctx.lineTo(0, height);  ctx.fill();  ctx.closePath()  //設(shè)置重疊效果  ctx.globalCompositeOperation = "destination-over"  //繪制第二個波形  ctx.beginPath();  ctx.fillStyle = lingrad2;  Q2+=speed2;  for (let x = 0; x < width; x++) {    var y = A2*Math.sin(x*W2+Q2) +H2;    ctx.lineTo(x, y);  }  ctx.lineTo(width,height);  ctx.lineTo(0,height);  ctx.fill()  ctx.closePath();})()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产日韩在线视频| 欧美日韩综合在线免费观看| 欧美日韩亚州综合| 中文官网资源新版中文第二页在线观看| 欧美另类久久久品| 日韩欧美三级视频| 日韩区欧美区| 亚洲 欧美 中文字幕| 午夜国产视频| 日本一级一片免费视频| www.av中文字幕| 日韩中文字幕91| 亚洲成人7777| 成人一区二区不卡免费| 亚洲成av人片| 亚洲乱码中文字幕| 国产免费播放一区二区| 中文字幕高清在线播放| 免费精品国产自产拍在| 99精品视频国产| 日韩精品在线观看视频| 日韩欧美99| av三级在线观看| 国产欧美日韩综合| 婷婷精品视频| 中文字幕日韩欧美在线| 欧美变态tickling挠脚心| 午夜精品一区二区三区免费视频| 日韩av一区二区在线| 一区二区中文字幕在线| 日韩在线观看一区| 人成在线免费视频| 最近免费中文字幕在线第一页| 国产一卡2卡3卡免费网站| 日本精品在线| 亚洲综合在线视频| 亚洲视频 中文字幕| 国产日韩av一区| 欧美日韩在线精品一区二区三区激情综| 日韩中文字幕第一页| 日韩精品视频免费| 欧美日韩成人一区| 日韩不卡一区二区| 午夜一区二区视频| av高清一区| 91精品国产手机| 在线观看免费国产成人软件| 日韩色在线观看| 欧美日韩国产第一页| 久久久91精品| 欧美不卡视频一区| 精品成人久久av| 91精品国产色综合久久久蜜香臀| 日韩中文字幕在线播放| 中文天堂在线一区| 欧美日中文字幕| 欧美一卡2卡3卡4卡| 亚洲国产欧美日韩在线| 日韩国产成人| 久久精品一二三| 午夜高潮免费视频| 蜜桃视频一日韩欧美专区| 国产www.大片在线| 中文字幕在线观看精品| 人妻一区二区三区免费| 欧美日韩在线视频首页| 在线视频你懂得一区| 国产欧美日韩综合精品| 亚洲福利精品视频| 亚洲国产福利视频| 久久99蜜桃精品久久久久小说| 中文字幕线观看| 国产福利免费在线观看| 红桃视频国产一区| 日韩在线视频在线观看| 97国产视频| 国产成人精品网址| 99精品在线播放| 在线视频亚洲| 欧美性生交大片免费| 久久久久久久久综合| 黄色精品在线观看| 精品久久九九| 欧美久久一二三四区| 中文字幕在线播放一区| 日韩国产在线观看一区| 亚洲综合在线不卡| 中文字幕国产亚洲| 一区二区三区在线播| 日韩国产91| 999精品视频在线观看播放| 欧美日韩国产三级| 亚洲热在线观看| 日韩色在线观看| 日韩视频免费直播| 欧美一级二级三级区| 国产高清在线视频| 日韩欧美在线综合网| 国产欧美 在线欧美| 欧美日韩亚洲不卡| 免费视频国产一区| 色综合久久88色综合天天免费| 日韩欧美国产亚洲| 日韩欧美在线字幕| 欧美日韩在线三级| 日韩av一区二区在线| 一区二区三区精品在线| 亚洲三级网站| 日韩美女中文字幕| 免费看日韩精品| 久久精品日韩无码| 欧美三级中文字幕| 国产欧美中文在线| 国产一级免费看| 国产婷婷在线观看| 黄色一区二区在线观看| 999视频精品| 精品久久久91| 国产丝袜一区二区| 国产三级在线观看视频| 视频一区三区| 深夜福利一区二区| 亚洲一级网站| 黄色一区二区在线观看| 亚洲一区日韩在线| 国产一区在线观看视频| 欧美日韩国产亚洲一区| 日韩亚洲欧美中文高清在线| 日韩欧美高清在线| 中文字幕在线日韩| 一区二区三区在线不卡| 中文字幕国产在线| 中文字幕日韩欧美在线视频| 一区二区在线高清视频| 国产成人综合av| 精品国产不卡一区二区| 91精品国产综合久久久久| 亚洲欧美中文字幕在线观看| 国产成人精品999| 国产一卡2卡3卡四卡网站| 亚洲欧洲精品在线| 在线精品日韩| 人成在线免费视频| 中文字幕在线亚洲| 日本啊v在线| 日韩欧美一卡二卡| 日本亚洲欧美三级| 在线亚洲免费| 久久蜜桃一区二区| 一级片免费在线| 一区二区欧美国产| 国产欧美日韩中文字幕在线| 欧美在线日韩在线| 久久riav| 日韩在线中文视频| 亚洲最新永久观看在线| av中文网站| 最新中文字幕在线| 欧美日韩在线第一页| 亚洲电影中文字幕在线观看| 欧美日韩夫妻久久| 国产一级片在线播放| 日韩午夜高潮| 日韩国产欧美亚洲| 91精品久久久久久久久| 亚洲综合日韩欧美| 欧美激情视频一区二区三区在线播放| 国产在线拍揄自揄拍| 日韩欧美在线中文字幕| 日韩 欧美 综合| 亚洲三级中文字幕| 91精品国产色综合久久不卡蜜臀| 国产伦精品免费视频| www.尤物.com| 免费看黄资源大全高清| 不卡一区2区| 影音先锋中文字幕在线观看| 精品日韩在线观看| 国产91久久久久蜜臀青青天草二 | 91精品观看| 久久综合久久综合九色 | 国产一级片在线播放| 欧美日韩国产高清一区| 国产导航在线| 国产一区二中文字幕在线看| 91精品婷婷国产综合久久| 日韩av一区二区在线| 在线观看精品国产| 中文字幕伊人| 国产视频二区| 日韩在线a电影| 日韩色在线观看| 精品国产999| 精品不卡一区二区| 国产视频二区| 久久香蕉av| 日本亚洲欧美天堂免费| 欧美日韩亚洲综合| 中文字幕在线视频第一页| 91精品国产色综合久久不卡蜜臀 | 97久久精品| 刘玥91精选国产在线观看| 中文字幕精品国产| 日韩视频精品在线观看| 免费看黄资源大全高清| 欧美日韩一二三四| 日韩精品一二三四区| 国产成人精品免费网站| 国产999在线观看| 色99中文字幕| 亚洲一区视频在线观看视频| 免费在线视频一区二区| 日韩欧美一卡二卡| 国产美女主播视频一区| 国产日韩1区| 午夜一区二区三区| 亚洲视频中文字幕| 久久精品卡一| 本道综合精品| 欧美日韩99| 精品日韩视频在线观看| 国产乱码午夜在线视频| 日韩欧美一级在线| 日韩欧美国产1| 欧美日韩激情一区| 欧美久久久网站| 免费看黄资源大全高清| 日韩精品福利视频| 精品欧美日韩| 久久精品久久精品亚洲人| 亚洲欧美中文在线视频| 激情国产在线| 中文在线а√在线8| 精品国产乱码一区二区| 欧美中日韩在线| 91精品国产综合久久香蕉最新版| 精品网站999| 免费日韩精品中文字幕视频在线| 日韩精品高清不卡| 中文字幕欧美日韩va免费视频| 日韩久久精品网| 中文字幕亚洲字幕| 婷婷中文字幕一区| 国产v日产∨综合v精品视频| 蜜桃视频中文字幕| av一卡二卡| 欧美日韩999| 欧美一级久久| 国产午夜精品一区二区三区视频| 欧美日韩综合视频网址| 日韩欧美在线综合| 欧美亚洲国产日韩2020| 亚洲福利精品| 国产网站av| av中文网站| 国产精品一区二区三区免费观看| 91亚洲欧美| 一级特黄大欧美久久久| 亚洲一区中文| 久99久视频| 亚洲国产91精品在线观看| 久久在线91| 国产字幕在线看| 日韩欧美中文免费| 亚洲乱码一区av黑人高潮| 色妇色综合久久夜夜| 亚洲中文字幕在线一区| 国产美女主播视频一区| 日韩欧美中文字幕一区| 中文字幕精品亚洲| 精品国产91| 欧洲精品二区| 亚洲va久久久噜噜噜久久| 日韩国产欧美亚洲| 蜜桃精品在线| 日韩欧美久久久| 欧美午夜影院在线视频| 国产三级在线| 最近高清中文在线字幕在线观看1| 久久精品国产视频| 欧洲精品二区| 在线观看区一区二| 在线日韩中文字幕| 97视频在线| 欧美天堂一区二区| 欧美日韩综合高清一区二区| 中文字幕在线中文字幕二区| 日韩精品视频在线观看网址| 亚洲一区在线观看网站| 中文在线日韩| 欧美99久久| 国产在线www| 亚洲一级二级| 欧美日韩午夜在线视频| 日韩欧美中文字幕在线视频| 日韩视频一区在线观看| 欧美日韩亚洲系列| 日本亚洲欧美天堂免费| 亚洲欧美视频一区二区三区 | 日韩精品在线视频| 免费一级欧美在线观看视频| 日韩欧美中文字幕一区| 国产成人精品免费网站| 91精品国产91久久久久青草| 91久久精品国产91性色69| 国产三级在线观看视频| 国产视频中文字幕在线观看| 99国产成 人 综合 亚洲欧美| 不卡一区2区| 欧美亚洲专区| 二区视频在线观看| 日韩高清不卡| 亚洲高清中文字幕| 欧美日韩午夜在线| 91精品综合久久久久久 | 欧美午夜精品在线| 亚洲中文字幕在线一区| 日韩欧美在线综合网| 久久精品99久久久久久久久| 粉嫩喷白浆久久| 精品视频—区二区三区免费| 欧洲精品在线一区| 久久激情一区| 欧美人妻一区二区三区| 国产最顶级的黄色片在线免费观看| 亚洲免费在线观看av| 中文字幕欧美亚洲| 国产永久免费高清在线观看| 欧美日韩人人澡狠狠躁视频| 久久精品国产99| 中文字幕2020第一页| 一区二区三区在线免费 | 天堂在线中文资源| 欧美三级在线播放| 99精品人妻国产毛片| 日韩精品三级| 天天摸日日摸狠狠添| 在线免费播放av| 在线视频不卡一区二区| 中文字幕日韩精品在线| 一级一片免费视频| 91精品国产自产91精品| 91精品视频观看| 欧美日韩高清在线播放| 成人一区二区不卡免费| 中文字幕在线视频日韩| 国产资源在线观看入口av| 国产高潮久久久| 国产成人精品免费久久久久| 精品国产1区2区3区| 国产小视频免费在线网址| 一本一道综合狠狠老| 日韩免费电影网站| 日韩精品在线免费看| 日韩字幕在线观看| 日韩中文字幕观看| 欧美日韩国产黄色| 国产香蕉免费精品视频| 日韩激情一区| 日本亚洲欧美天堂免费| 亚洲男女av一区二区| 久久人人精品| 国产在线日韩精品| 一二三区精品福利视频| 欧美亚洲国产免费| 国产在成人精品线拍偷自揄拍| 国产资源中文字幕| a视频免费看| 日韩激情一区| 欧美激情一区二区三区在线| 91精品国产91| 国产一卡2卡3卡四卡网站| 欧美日韩在线不卡| 欧美三级日韩在线| 亚洲综合日韩欧美| av亚洲免费| 日韩视频在线免费播放| 欧美二三四区| 国产欧美高清在线| 欧美日韩午夜在线| 国产黄色在线免费观看| 日韩欧美专区在线| 男人的天堂网av| 日韩欧美国产不卡| 午夜国产在线视频| 欧美日韩在线播放三区四区| 欧美亚洲另类制服自拍| 最近高清中文在线字幕在线观看1 中文字幕在线视频久 | 日韩欧美999| 国产黄色精品| 精品久久在线观看| 91久久精品国产91久久| 国产黄色精品| 91麻豆精品国产91久久久使用方法| 美女尤物久久精品| 日韩不卡高清视频| 国产日韩av一区| 国产在线视频一区二区| 91精品在线观| 精品人妻一区二区免费视频|