您好,登錄后才能下訂單哦!
這篇文章主要介紹了html5怎么實(shí)現(xiàn)波浪效果圖的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇html5怎么實(shí)現(xiàn)波浪效果圖文章都會(huì)有所收獲,下面我們一起來看看吧。
先畫個(gè)最作一新求抖直微圈簡單的圓
var ctx = document.getElementById('myCanvas').getContext('2d');
ctx.lineWidth = 1;
ctx.strokeStyle = "orange";
ctx.arc(100,100,90,0,2*Math.PI,false);
ctx.stroke();
在圓內(nèi)上下滾遇新是直朋能到分覽動(dòng)的線
var ctx = document.getElementById('myCanvas').getContext('2d');
var y = 100;
var flag = 0;
function init(){
//清空canvas
ctx.clearRect(0,0,200,200);
//計(jì)算在左半圓上隨著y值上下移動(dòng),對(duì)應(yīng)的x值
// var y = 30;
var expression = 8100 - Math.pow((100-y),2);
var x = 100 - Math.sqrt(expression) ;
ctx.beginPath();
ctx.lineWidth = 1;
ctx.strokeStyle = "orange";
ctx.arc(100,100,90,0,2*Math.PI,false);
ctx.stroke();
ctx.lineWidth = 1;
ctx.strokeStyle = "green";
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineTo(200-x, y);
ctx.stroke();
if (flag == 0) {
y += 1;
if(y == 130){
flag = 1;
}
}else{
y -= 1;
if (y == 70) {
flag = 0;
}
}
window.requestAnimationFrame(init);
}
模擬水在整中比需抖接朋功要朋插個(gè)球內(nèi)起伏
var ctx = document.getElementById('myCanvas').getContext('2d');
var y = 100;
var flag = 0;
function init(){
//清空canvas
ctx.clearRect(0,0,200,200);
//計(jì)算在左半圓上隨著y值上下移動(dòng),對(duì)應(yīng)的x值
var expression = 8100 - Math.pow((100-y),2);
var x = 100 - Math.sqrt(expression) ;
ctx.lineWidth = 1;
ctx.strokeStyle = "green";
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineTo(200-x, y);
ctx.stroke();
//計(jì)算圓起始點(diǎn)(與X軸平行的直徑的右側(cè)端點(diǎn))與圓左側(cè)給定Y坐標(biāo)的點(diǎn)
var distance = Math.sqrt(Math.pow((190-x),2)+Math.pow((100-y),2));
//sina=d/2r a為夾角的一半 2a為兩點(diǎn)的圓心角 Math.asin最終結(jié)果為弧度 如asin(1)=1/2*PI
var angle = Math.asin(distance/180)*2;
ctx.beginPath();
if(y<100){
angle = 2*Math.PI - angle;
}
ctx.arc(100,100,90,Math.PI-angle,angle,false);
ctx.stroke();
if (flag == 0) {
y += 1;
if(y == 150){
flag = 1;
}
}else{
y -= 1;
if (y == 50) {
flag = 0;
}
}
window.requestAnimationFrame(init);
}
模擬球兩邊的起伏不同比抖朋要插支一圈不者地步
var ctx = document.getElementById('myCanvas').getContext('2d');
var step = 0;
function init(){
//清空canvas
ctx.clearRect(0,0,200,200);
step++;
//轉(zhuǎn)化為弧度
var stepAngle = step*Math.PI/180;
var deltaHeight = Math.sin(stepAngle)*30;
var deltaHeightRight = Math.cos(stepAngle)*30;
var y = 100 + deltaHeight;
//計(jì)算在左半圓上隨著y值上下移動(dòng),對(duì)應(yīng)的x值
var expression = 8100 - Math.pow((100-y),2);
var x = 100 - Math.sqrt(expression) ;
var rightY = 100 + deltaHeightRight;
var expressionRight = 8100 - Math.pow((100-rightY),2);
//取右側(cè)的X坐標(biāo)(同一個(gè)y值會(huì)有兩個(gè)x坐標(biāo))
var rightX = 200 - (100 - Math.sqrt(expressionRight));
// alert("rightX:"+rightX+" rightY:"+rightY+" x:"+x+" y:"+y);
ctx.lineWidth = 1;
ctx.strokeStyle = "green";
ctx.fillStyle = "green";
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineTo(rightX, rightY);
ctx.stroke();
//計(jì)算圓起始點(diǎn)(與X軸平行的直徑的右側(cè)端點(diǎn))與圓左側(cè)給定Y坐標(biāo)的點(diǎn)
var distance = Math.sqrt(Math.pow((190-x),2)+Math.pow((100-y),2));
//sina=d/2r a為夾角的一半 2a為兩點(diǎn)的圓心角 Math.asin最終結(jié)果為弧度 如asin(1)=1/2*PI
var angle = Math.asin(distance/180)*2;
var distanceRight = Math.sqrt(Math.pow((190-rightX),2)+Math.pow((100-rightY),2));
var angleRight = Math.asin(distanceRight/180)*2;
ctx.beginPath();
//如果在左側(cè)上半圓則用2PI-弧度
if(y<100){
angle = 2*Math.PI - angle;
}
if(rightY < 100){
angleRight = -angleRight;
}
ctx.arc(100,100,90,angleRight,angle,false);
ctx.stroke();
// ctx.fill();
window.requestAnimationFrame(init);
}
把起伏的直朋不功事做時(shí)次功好來多這開制的請(qǐng)一例農(nóng)在線改成曲線(見開頭的效果圖是能覽調(diào)不頁新代些事幾求事都時(shí)學(xué)下是事)
var ctx = document.getElementById('myCanvas').getContext('2d');
var step = 0;
function init(){
//清空canvas
ctx.clearRect(0,0,200,200);
step+=3;
//轉(zhuǎn)化為弧度
var stepAngle = step*Math.PI/180;
var deltaHeight = Math.sin(stepAngle)*20;
var deltaHeightRight = Math.cos(stepAngle)*20;
var y = 100 + deltaHeight;
//計(jì)算在左半圓上隨著y值上下移動(dòng),對(duì)應(yīng)的x值
var expression = 8100 - Math.pow((100-y),2);
var x = 100 - Math.sqrt(expression) ;
var rightY = 100 + deltaHeightRight;
var expressionRight = 8100 - Math.pow((100-rightY),2);
//取右側(cè)的X坐標(biāo)(同一個(gè)y值會(huì)有兩個(gè)x坐標(biāo))
var rightX = 200 - (100 - Math.sqrt(expressionRight));
// alert("rightX:"+rightX+" rightY:"+rightY+" x:"+x+" y:"+y);
ctx.lineWidth = 5;
ctx.strokeStyle = "green";
ctx.beginPath();
ctx.arc(100,100,90,0,Math.PI*2,false);
ctx.stroke();
// ctx.fillStyle = "green";
ctx.fillStyle = "rgba(0,222,255, 0.2)";
ctx.beginPath();
ctx.moveTo(x,y);
// ctx.lineTo(rightX, rightY);
ctx.bezierCurveTo(100, y-30, 100, rightY-30, rightX,rightY);
// ctx.stroke();
//計(jì)算圓起始點(diǎn)(與X軸平行的直徑的右側(cè)端點(diǎn))與圓左側(cè)給定Y坐標(biāo)的點(diǎn)
var distance = Math.sqrt(Math.pow((190-x),2)+Math.pow((100-y),2));
//sina=d/2r a為夾角的一半 2a為兩點(diǎn)的圓心角 Math.asin最終結(jié)果為弧度 如asin(1)=1/2*PI
var angle = Math.asin(distance/180)*2;
var distanceRight = Math.sqrt(Math.pow((190-rightX),2)+Math.pow((100-rightY),2));
var angleRight = Math.asin(distanceRight/180)*2;
// ctx.beginPath();
//如果在左側(cè)上半圓則用2PI-弧度
if(y<100){
angle = 2*Math.PI - angle;
}
if(rightY < 100){
angleRight = -angleRight;
}
ctx.arc(100,100,90,angleRight,angle,false);
// ctx.stroke();
ctx.fill();
window.requestAnimationFrame(init);
}
關(guān)于“html5怎么實(shí)現(xiàn)波浪效果圖”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“html5怎么實(shí)現(xiàn)波浪效果圖”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。