当前位置:首页 > JavaScript

js实现曲线

2026-01-31 21:23:05JavaScript

使用Canvas绘制曲线

在JavaScript中,Canvas API提供了多种绘制曲线的方法。beginPath()开始路径,moveTo()移动到起点,quadraticCurveTo()bezierCurveTo()绘制曲线。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.moveTo(50, 50);
ctx.quadraticCurveTo(100, 100, 150, 50); // 二次贝塞尔曲线
ctx.stroke();

使用SVG创建曲线

SVG的<path>元素可通过d属性定义曲线路径。M移动到起点,QC分别创建二次或三次贝塞尔曲线。

js实现曲线

<svg width="200" height="200">
  <path d="M50 50 Q100 100 150 50" stroke="black" fill="none"/>
</svg>

使用数学函数生成曲线点

通过数学函数(如正弦函数)生成坐标点,再用线段连接形成曲线。

js实现曲线

const points = [];
for (let x = 0; x < 200; x++) {
  const y = 50 + 30 * Math.sin(x * 0.05);
  points.push({x, y});
}

ctx.beginPath();
points.forEach((point, i) => {
  if (i === 0) ctx.moveTo(point.x, point.y);
  else ctx.lineTo(point.x, point.y);
});
ctx.stroke();

使用第三方库(如D3.js)

D3.js提供高级曲线生成功能,如插值曲线或平滑过渡。

import * as d3 from 'd3';

const lineGenerator = d3.line()
  .x(d => d.x)
  .y(d => d.y)
  .curve(d3.curveBasis);

const pathData = lineGenerator(points);

曲线动画效果

结合requestAnimationFrame动态更新曲线坐标,实现动画效果。

let offset = 0;
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();
  for (let x = 0; x < 200; x++) {
    const y = 50 + 30 * Math.sin(x * 0.05 + offset);
    if (x === 0) ctx.moveTo(x, y);
    else ctx.lineTo(x, y);
  }
  ctx.stroke();
  offset += 0.1;
  requestAnimationFrame(animate);
}
animate();

标签: 曲线js
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…