y: (1 - t) * p1.y + t * p2.y,
}
}
lerp 是 Linear interpolation(线性插值) 的缩写。...(p1, cp1, t);
const b = lerp(cp1, cp2, t);
const c = lerp(cp2, p2, t);
const e = lerp(a, b, t)...;
const f = lerp(b, c, t);
return lerp(e, f, t);
};
上面这个算法还可以优化,将其化简成一个专用的三阶贝塞尔曲线公式,以减少运算量,读者可自行尝试...(p1, cp1, t);
const b = lerp(cp1, cp2, t);
const c = lerp(cp2, p2, t);
return [lerp(a, b, t),...lerp(b, c, t)];
};
切线求出来了,切向量自然也能计算出来了。