亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

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

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

最近項(xiàng)目中,ui設(shè)計(jì)了個(gè)水波效果的背景動(dòng)畫,然而并沒有g(shù)if或svg動(dòng)畫,開始試著用css實(shí)現(xiàn)了一下,動(dòng)畫效果并不是很好,網(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對(duì)應(yīng)y的     var y = A*Math.sin(W*x+Q) +H    ctx.lineTo(x, y)  }  ctx.stroke();                      //繪制路徑  ctx.closePath();                   //閉合路徑})()

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

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

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

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

修改以上代碼為:

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對(duì)應(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)建一個(gè)漸變顏色,作為填充顏色,代碼如下:

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ù),代碼

四、完善水波動(dòng)畫

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

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

2、再添加一個(gè)相位變化不同的波形,其漸變填充與上一個(gè)漸變方向相反使其形成相互重疊的陰影效果;并設(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);  //繪制第一個(gè)波形  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"  //繪制第二個(gè)波形  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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到HTML教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久艹在线视频| 久久久久久久久久久久久久免费看| 日韩天堂在线| 激情深爱综合网| 香蕉久久aⅴ一区二区三区| 亚洲电影男人天堂| 日韩中文字幕不卡| 亚洲免费网站观看视频| 无码人妻aⅴ一区二区三区日本| 你懂的国产精品| 亚洲精品免费一区亚洲精品免费精品一区| 国产精品入口夜色视频大尺度| 国产麻豆天美果冻无码视频| 国产精品成人免费一区二区视频| 久久精品久久精品国产大片| 欧美性生交片4| 日韩美女毛茸茸| 超碰在线超碰在线| 欧美在线观看视频一区二区| 992tv成人国产福利在线| 欧美成人一区二区三区| 强伦人妻一区二区三区| 日韩一区二区三区四区| 免费一级黄色大片| 日韩中文欧美在线| 99精产国品一二三产品香蕉| 日本成年人网址| 国产精品久久久久久成人| 神马国产精品影院av| 国产精品日韩欧美大师| 日本高清免费观看| 国产成人av一区二区三区在线观看| 台湾佬成人网| 国产午夜精品在线观看| 香蕉视频911| 都市激情久久综合| 99香蕉国产精品偷在线观看| 久久精品一区二区三| 欧美日韩国产综合视频在线| 日韩在线短视频| 免费看的国产视频网站| 99久久久久国产精品| 欧美激情亚洲天堂| 一区二区三区网址| 手机在线免费看片| a级黄色毛片| 国产91精品欧美| 国产人妖乱国产精品人妖| www久久久久| 精品亚洲国内自在自线福利| 在线观看成人动漫| 亚洲国产精品久久人人爱| 狼人综合视频| 久久视频国产精品免费视频在线| 色伊人久久综合中文字幕| av综合在线观看| 日韩一级视频免费观看在线| 欧美手机在线| 国产精品盗摄一区二区三区| 97精品人妻一区二区三区在线| 日韩极品在线观看| 超污视频在线播放| 亚洲熟妇无码一区二区三区| 国产一级片一区二区| 91成人免费在线视频| 综合在线一区| 男人舔女人下部高潮全视频| 日韩欧美一区二区三区在线| 人妻丰满熟妇aⅴ无码| 99精品视频网| 北岛玲日韩精品一区二区三区| 2020中文字字幕在线不卡| 国产免费高清视频| 欧美一区二区三区四区在线观看| 久久久久久高潮国产精品视| 亚洲人成网站在线播| a视频在线观看免费| 亚洲另类激情图| av在线播放网| 操人视频欧美| 欧美日韩高清一区二区| 深夜成人在线观看| 久久97超碰国产精品超碰| 一级黄色大片免费| 图片区偷拍区小说区| 久久精品国产77777蜜臀| 一级成人黄色片| 亚洲精品国产av| 欧美一级欧美三级在线| 欧美日产国产成人免费图片| 麻豆传媒在线完整视频| 久草在线视频精品| 最新中文字幕免费| 久久无码专区国产精品s| 成人av在线资源网站| 亚洲国产欧美久久| 久久综合中文色婷婷| 成人午夜伦理影院| 欧美五码在线| 99蜜月精品久久91| 欧美一级欧美三级在线观看| chinese偷拍一区二区三区| 午夜剧场高清版免费观看| 播放灌醉水嫩大学生国内精品| 欧美一区二区三区在线播放| 亚洲国产aⅴ精品一区二区| www.99热这里只有精品| 欧洲亚洲一区二区三区| 91女神在线视频| 色偷偷精品视频在线播放| 国产亚洲精品自在久久| 欧美日韩一区在线播放| 色yeye香蕉凹凸一区二区av| 国内精品久久久久影院优| 亚洲一区成人在线| 日本激情一区二区三区| 在线观看视频一区| 在线观看av的网址| 欧美在线日韩在线| 中文一区二区视频| 日韩欧美美女在线观看| 欧美精品一区二区三区高清aⅴ| 婷婷久久综合九色综合伊人色| 欧美成人国产精品一区二区| 黄色三级网站| 国产真实乱子伦精品视频| 毛片.com| 亚洲国产精品第一页| 两个人看的免费完整在线观看| 不卡av免费在线观看| 西游记1978| ww久久综合久中文字幕| 粉嫩一区二区三区性色av| 六月婷婷中文字幕| 欧美区一区二区| jizzjizz日本护士免费| 日韩精品久久久久久福利| 伊人久久影院| 国产成人综合精品三级| 亚洲成av人片www| 成人av无码一区二区三区| 国产综合久久| 欧美三级日韩三级国产三级| 国产在线天堂www网在线观看| 在线视频一区二区三区四区| 亚洲va国产日韩欧美精品色婷婷| 亚洲爱爱综合网| √…a在线天堂一区| 中文幕一区二区三区久久蜜桃| 国产精品男女| 日韩欧美成人一区| 黄色视屏免费在线观看| 国产一区二区三区三区在线观看| 日本学生初尝黑人巨免费视频| 免费xxxx性欧美18vr| 亚洲乱码中文字幕| av人人综合网| 成人深夜在线观看| 在线观看免费黄色片| 欧美v国产在线一区二区三区| 热re91久久精品国99热蜜臀| 性国裸体高清亚洲| 亚洲精品中文在线观看| 成年人三级黄色片| 豆国产97在线|亚洲| 国产精品蜜芽在线观看| 99久久久无码国产精品性波多| 欧美特级aaa| av影音资源| 国产精品第九页| 欧美在线视频免费观看| 成人精品一区二区三区四区| 欧美日韩成人一区| 波多野结衣在线观看视频| 特级丰满少妇一级| 图片区小说区区亚洲影院| 欧美在线视频免费| 色综合www| 久久久久久久99| 真实新婚偷拍xxxxx| v8888av| 91av在线国产| 亚洲手机视频| 国内一区二区在线视频观看| 熟妇熟女乱妇乱女网站| 福利一区和二区| 亚洲人在线播放| 亚洲性图自拍| 欧美成人hd| 欧美最猛性xxxxx亚洲精品| 国产精品狼人久久影院观看方式| 欧美h在线观看| 成人妇女淫片aaaa视频| 国产精品国产三级国产aⅴ中文| 91av在线播放| 丝袜美腿一区二区三区| 日韩av中文字幕在线免费观看| 永久免费未满蜜桃| 97中文在线观看| 日韩一级成人av| 国产欧美一区二区三区国产幕精品| 性感av在线播放| 国产日韩欧美三级| 国产精品视频一区二区三区四蜜臂| 人人妻人人澡人人爽久久av| av在线播放亚洲| 91精品国产综合久久香蕉| 99热6这里只有精品| 国产精品蜜月aⅴ在线| 欧美日韩成人综合| 蜜臀久久久久久999| 亚洲天堂网站在线| 日日干日日操| 亚洲国产精品欧美久久| 亚洲精品国产一区二区三区四区在线| 日韩中文字幕在线| 日本乱人伦a精品| 国产无遮挡又黄又爽免费网站| 六月婷婷一区| 影视一区二区| 国产精品久久久久久久久久久新郎| 四虎影视网站| 香港三日本三级少妇66| 亚洲视频一区| 日本精品视频在线播放| 在线播放三级网站| 成av人免费青青久| 不卡av在线播放| 色综合久久久久综合体| 欧美日韩精品一区二区三区视频播放| 在线亚洲一区| 亚洲精品视频在线| 国产树林野战在线播放| 日韩电影天堂视频一区二区| 天堂√在线观看一区二区| 人妻夜夜爽天天爽| 亚洲爆乳无码一区二区三区| 日韩a级作爱片一二三区免费观看| 日韩av二区在线播放| 永久免费看mv网站入口| 亚洲欧美日韩精品| 人操人爱免费视频| 69国产精品视频免费观看| 免费黄色成年网站| 中文字幕精品一区二区精品绿巨人| 99九九99九九九视频精品| 久久久久青草大香线综合精品| 国产乱码在线观看| 欧美人与禽zoz0善交| 欧美成人家庭影院| 亚瑟在线精品视频| 欧洲视频一区| 红桃视频国产精品| 日韩av地址| 麻豆av免费在线观看| 国产精品久久久久久久久久三级| 亚洲国产日韩欧美在线动漫| 日本性视频网| 中文字幕求饶的少妇| 亚洲国产精品久久久天堂| 影音先锋国产资源| 国产天堂亚洲国产碰碰| 青娱乐免费在线视频| av男人的天堂在线观看| 奇米精品一区二区三区在线观看| 影音先锋可以看的网站| 久久精品丝袜高跟鞋| 久久免费视频网| 亚洲国产欧美国产综合一区| 麻豆md0077饥渴少妇| 97国产在线视频| 99国产精品久久久久99打野战| 欧美日韩黄色影视| 成人黄色片在线观看| 午夜视频在线观看国产| 微拍福利一区二区| 69堂成人精品免费视频| 亚洲国产老妈| 91系列在线播放| 黄色精品免费| 久久久久久av无码免费网站下载| 亚洲欧美日韩国产一区二区三区| 制服影音先锋| 亚洲第一偷拍网| bdsmchinese医疗折磨| 亚洲婷婷综合网| 亚洲国产精品女人久久久| 不卡av电影在线播放| 偷拍国模大尺度视频在线播放| 久久国产麻豆精品| 中文字幕大看焦在线看| 久久精品理论片| 欧美一卡在线观看| 国产精品美女999| 亚洲国产经典视频| 国产激情综合| 久久三级视频| 精品人妻一区二区三区日产乱码| 这里只有精品视频| 免费观看的毛片| 五月婷婷在线观看视频| 久久无码人妻精品一区二区三区| 2023国产精品久久久精品双| 欧美成人精品福利网站| 午夜激情一区二区| 免费精品国产自产拍观看| 激情五月婷婷综合| 无码人妻精品一区二区三区蜜桃91| 污污的视频网站在线观看| 97久久超碰精品国产| 欧美在线视频观看免费网站| 亚洲精品成人在线| 91国自产精品中文字幕亚洲| 国产普通话bbwbbwbbw| 国产福利免费观看| 免费无码不卡视频在线观看| 国产精品久久久久桃色tv| 色狠狠av一区二区三区香蕉蜜桃| 国产婷婷一区二区三区| 欧美wwwwxxxx| 8x国产一区二区三区精品推荐| 亚洲成人一区二区三区| 久久影院免费观看| 天堂av在线资源| 看高清中日韩色视频| 国产a级网站| 色青青草原桃花久久综合| 亚洲免费资源|