当前位置:首页 > JavaScript

js 实现抛物线

2026-03-01 20:14:17JavaScript

在JavaScript中实现抛物线动画效果可以通过数学公式结合CSS或Canvas绘制来实现。以下是两种常见的方法:

js 实现抛物线

使用CSS和JavaScript实现抛物线动画

抛物线的基本公式为 y = a * x^2 + b * x + c,其中a控制开口方向和大小,bc为偏移量。

js 实现抛物线

// 创建抛物线动画元素
const ball = document.createElement('div');
ball.style.width = '20px';
ball.style.height = '20px';
ball.style.backgroundColor = 'red';
ball.style.borderRadius = '50%';
ball.style.position = 'absolute';
document.body.appendChild(ball);

// 抛物线参数
const a = 0.01; // 控制抛物线开口
const b = 0;    // 线性系数
const c = 0;    // 常数项

// 动画函数
function animate() {
  let x = 0;
  const interval = setInterval(() => {
    x += 5;
    const y = a * Math.pow(x, 2) + b * x + c;
    ball.style.left = `${x}px`;
    ball.style.top = `${y}px`;

    if (x > 300) clearInterval(interval); // 停止条件
  }, 30);
}

animate();

使用Canvas绘制抛物线

Canvas更适合复杂的动态绘制,可以实时更新抛物线轨迹。

const canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 400;
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');

// 抛物线参数
const a = 0.01;
const b = 0;
const c = 0;

// 绘制抛物线轨迹
function drawParabola() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();

  for (let x = 0; x <= 300; x += 5) {
    const y = a * Math.pow(x, 2) + b * x + c;
    ctx.lineTo(x, y);
  }

  ctx.strokeStyle = 'blue';
  ctx.stroke();

  // 绘制动点
  const currentX = (Date.now() / 50) % 300;
  const currentY = a * Math.pow(currentX, 2) + b * currentX + c;
  ctx.fillStyle = 'red';
  ctx.beginPath();
  ctx.arc(currentX, currentY, 5, 0, Math.PI * 2);
  ctx.fill();

  requestAnimationFrame(drawParabola);
}

drawParabola();

实现带初速度的抛物线

若需模拟物理效果(如抛体运动),需考虑水平初速度vx和垂直初速度vy,并加入重力加速度g

// 物理参数
let x = 0, y = 0;
const vx = 3, vy = -15; // 初速度
const g = 0.2;          // 重力加速度

function physicsAnimation() {
  x += vx;
  y += vy;
  vy += g; // 垂直速度受重力影响

  ball.style.left = `${x}px`;
  ball.style.top = `${y}px`;

  if (x < 300) requestAnimationFrame(physicsAnimation);
}

physicsAnimation();

注意事项

  • CSS方法适合简单DOM元素动画,性能较轻。
  • Canvas适合复杂绘制,但需手动管理渲染。
  • 物理模拟中,g和初速度需根据实际需求调整。
  • 使用requestAnimationFramesetInterval更流畅。

以上方法可根据具体场景选择或组合使用。

标签: 抛物线js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 cons…