曲线(一)

734 阅读1分钟
隐式函数和参数方程

隐式函数:f(x, y) = 0,表示了任意点在x - y坐标系上的位置情况

参数方程:

image.png

将点的x,y坐标以参数方程形式表示

使用参数方程

使用参数方程实际意义在于引入一个第三方变量可以表示任意一个含义,包括但不仅限于时间,速度

线段

一条线段在x – y坐标系上可以使用向量进行表示,例如:

image.png

若引入变量u代表时间,在线段AB上表示u从A到B的任意时刻上所处的位置,则对于变量u的变化率,我们给定闭区间范围 [0,1] 则变量u在任意时刻所处位置用用向量表示为

A+u(BA)=(1u)A+uBA+u(B-A) = (1-u)A + uB

曲线

Power Basic Form Of Curve 曲线的幂基形式

image.png

表示曲线上的处于u时刻的点位置

曲线的阶数(degree)

Linear curve,degree = 1 Cu=a1u+a0C_u=a_1 u+a_0

quadratic curve,degree = 2 表示三点之间的连线 Cu=(a2u+a1)u+a0C_u=(a_2 u+a_1)u+a_0

cubic curve,degree = 3 表示四点之间的连线 Cu=((a3u+a2)u+a1)u+a0C_u=((a_3 u+a_2)u+a_1)u+a_0

image.png

线段组成的曲线 阶数越高,越逼近曲线

下面给出幂基曲线的算法伪代码

/**
 * N阶幂基曲线函数
 * @param {vector[]} a 控制点数组
 * @param {number} n 曲线阶数
 * @param {number} u 时刻点
 * @returns {vector} C 返回的点
 */
function powerBasicCurve(a, n, u) {
  var C = a[n];
  for (var i = n - 1; i >= 0; i--) {
    C = C * u + a[i];
  }
  return C;
}