canvas实现鼠标跟随模拟物理绳子甩动交互效果代码

代码语言:html

所属分类:其他

代码描述:canvas实现鼠标跟随模拟物理绳子甩动交互效果代码

代码标签: canvas 鼠标 跟随 模拟 物理 绳子 甩动 交互

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

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

<head>
  <meta charset="UTF-8">
 
  
  
<style>
body{
  background-color:#1A1B1F;
}

#container{
  max-width:800px;
  height:480px;
  background-color:black;
  margin: 0 auto;
  -webkit-box-sizing::border-box;
  border-style: solid;
  border-color: white;
}

#container p{
  color:white;
  margin-left:25px;
}
</style>


  
  
</head>


<body>
  <div id="container">
    <canvas id="canvas" width="800" height="480"></canvas>
   <p>Verlet Physics Rope (move the mouse!)</p>
  </div>

  
      <script >
//A small scaffold specifically to help me design code pen interactions

//Math extensions
Math.lerp = (first, second, percentage) => {
  return first + (second - first) * percentage;
};

Math.clamp = (value, min, max) => {
  return value < min ? min : value > max ? max : value;
};

class Vector2 {
  static zero() {
    return { x: 0, y: 0 };
  }

  static sub(a, b) {
    return { x: a.x - b.x, y: a.y - b.y };
  }

  static add(a, b) {
    return { x: a.x + b.x, y: a.y + b.y };
  }

  static mult(a, b) {
    return { x: a.x * b.x, y: a.y * b.y };
  }

  static scale(v, scaleFactor) {
    return { x: v.x * scaleFactor, y: v.y * scaleFactor };
  }

  static mag(v) {
    return Math.sqrt(v.x * v.x + v.y * v.y);
  }

  static normalized(v) {
    const mag = Vector2.mag(v);

    if (mag === 0) {
      return Vector2.zero();
    }
    return { x: v.x / mag, y: v.y / mag };
  }}


class App {
  co.........完整代码请登录后点击上方下载按钮下载查看

网友评论0