canvas可触摸交互式水面波纹动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas可触摸交互式水面波纹动画效果代码,点击鼠标拖动试试。

代码标签: canvas 触摸 交互 水面 波纹 动画

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

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

<head>

   
<meta charset="UTF-8">


   
<style>
        html
,
        body
{
         
width: 100%;
         
height: 100%;
         
overflow: hidden;
         
touch-action: none;
         
cursor: none;
       
}
   
</style>


</head>

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

   
<script>
        function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function getRandomFloat(min, max) {
          return Math.random() * (max - min) + min;
        }
       
        function getRandomInt(min, max) {
          return Math.floor(Math.random() * (max - min + 1)) + min;
        }
       
        function cycle(value, total) {
          return (value % total + total) % total;
        }
       
        //*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡/
        // Entity
        //*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡*/
       
        class Entity {constructor() {_defineProperty(this, "dpr",
            window.devicePixelRatio || 1);_defineProperty(this, "toValue",
            value => value * this.dpr);_defineProperty(this, "draw",
            () => {});_defineProperty(this, "update",
            () => {});}}
       
       
        //*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡/
        // Point
        //*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡*/
       
        class Point {
          constructor(x, y) {
            this.x = x;
            this.y = y;
          }
       
          get position() {
            return [this.x, this.y];
          }
       
          clone() {
            return new Point(this.x, this.y);
          }
       
          delta(point) {
            return [this.x - point.x, this.y - point.y];
          }
       
          distance(point) {
            const dx = point.x - this.x;
            const dy = point.y - this.y;
            return Math.sqrt(dx * dx + dy * dy);
          }
       
          moveTo(x, y) {
            this.x = x;
            this.y = y;
            return this;
          }
       
          moveAtAngle(angle, distance) {
            this.x += Math.cos(angle) * distance;
            this.y += Math.sin(angle) * distance;
            return this;
          }
       
          applyVelocity(velocity) {
            this.x += velocity.vx;
            this.y += velocity.vy;
            return this;
          }
       
          angleRadians(point) {
            // radians = atan2(deltaY, deltaX)
            const y = point.y - this.y;
            const x = point.x - this.x;
            return Math.atan2(y, x);
          }
       
          angleDeg(point) {
            // degrees = atan2(deltaY, deltaX) * (180 / PI)
            const y = point.y - this.y;
            const x = point.x - this.x;
            return Math.atan2(y, x) * (180 / Math.PI);
          }
       
          rotate(origin, radians) {
            // rotate the point around a given origin point
            const cos = Math.cos(radians);
            cons.........完整代码请登录后点击上方下载按钮下载查看

网友评论0