canvas实现鼠标点击可产生水流涟漪波纹动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas实现鼠标点击可产生水流涟漪波纹动画效果代码

代码标签: canvas 鼠标 点击 产生 水流 涟漪 波纹 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  


  
  
  
<style>
body {
background:rgb(34, 0, 37);
margin:0;
overflow:hidden;
}
</style>



  
  
</head>


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

  
      <script>
//This is a pressure based fluid sim that demonstrates mechanical wave motion.
var can = document.getElementById("canvas");
var ctx = can.getContext("2d");
can.width = window.innerWidth;
can.height = window.innerHeight;
var body = [];
var l = [];
var substeps = 2;
var click = false;
function randFrom(min, max) {
  //Returns a random number from minimum to maximum
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
function randBet(c1, c2) {
  //Returns a random element from two options
  var nArr = [c1, c2];
  return nArr[randFrom(0, 1)];
}
function norm(v) {
  var mag = Math.sqrt(v.x ** 2 + v.y ** 2);
  return { x: v.x / mag, y: v.y / mag };
}
function dot(v1, v2) {
  return v1.x * v2.x + v1.y * v2.y;
}
function dist(p1, p2) {
  return Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2);
}
function distSqrd(p1, p2) {
  return (p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2;
}
var curveArray = [];
function curveVertex(px, py, context, active) {
  curveArray.push({ x: px, y: py });
  var length = curveArray.length;
  if (length == 4) {
    var tan1 = { x: (curveArray[2].x - curveArray[0].x) / 4, y: (curveArray[2].y - curveArray[0].y) / 4 };
    var tan2 = { x: (curveArray[1].x - curveArray[3].x) / 4, y: (curveArray[1].y - curveArray[3].y) / 4 };
    context.bezierCurveTo(curveArray[1].x + tan1.x, curveArray[1].y + tan1.y, curveArray[2].x + tan2.x, curveArray[2].y + tan2.y, curveArray[2].x, curveArray[2].y);
    curveArray.shift();
  } else if (length == 2) {
    context.moveTo(curveArray[1].x, curveArray[1].y);
  }
  if (a.........完整代码请登录后点击上方下载按钮下载查看

网友评论0