📚前端面试题速记
Q5

图形学算法:什么是贝塞尔曲线?前端哪里会用到?

速记答案(30 秒)

通过控制点定义的平滑曲线,参数t从0到1插值。应用:CSS cubic-bezier缓动、SVG路径C/Q命令、Canvas的bezierCurveTo、图形编辑器路径。

📖 详细讲解

标准面试回答(推荐记住)

贝塞尔曲线是通过控制点定义的平滑曲线,一阶是直线,二阶三阶可表达复杂曲线。曲线点由参数t从0到1插值得到,常用De Casteljau算法或多项式形式计算。前端应用很广:CSS动画的cubic-bezier缓动曲线、SVG路径的C和Q命令、Canvas的quadraticCurveTo和bezierCurveTo方法、图形编辑器中的路径和插值运动轨迹等。

贝塞尔曲线阶数

  • 一阶(线性):2个点,直线
  • 二阶(二次):3个点,抛物线
  • 三阶(三次):4个点,S曲线,最常用

数学公式(三阶)

B(t) = (1-t)³P₀ + 3(1-t)²tP₁ + 3(1-t)t²P₂ + t³P₃

面试要点

  • 理解控制点对曲线形状的影响
  • 知道CSS cubic-bezier的四个参数含义
  • 了解De Casteljau算法的递归思想

💻 代码示例

Canvas 贝塞尔曲线
const ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.moveTo(50, 200);  // 起点

// 二次贝塞尔:1个控制点
ctx.quadraticCurveTo(150, 50, 250, 200);

// 三次贝塞尔:2个控制点
ctx.bezierCurveTo(350, 50, 450, 350, 550, 200);

ctx.stroke();
交互式贝塞尔曲线编辑器(可拖拽控制点)
🎨 效果预览