我正在分析 Apple 的这段代码:
http://opensource.apple.com/source/WebCore/WebCore-955.66/platform/graphics/UnitBezier.h
我特别不明白的部分是这个部分,他们计算曲线的多项式系数(他们假设 P0 和 P1 分别是(0,0)和(1,1)):
UnitBezier(double p1x, double p1y, double p2x, double p2y)
{
// Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).
cx = 3.0 * p1x;
bx = 3.0 * (p2x - p1x) - cx;
ax = 1.0 - cx -bx;
cy = 3.0 * p1y;
by = 3.0 * (p2y - p1y) - cy;
ay = 1.0 - cy - by;
}
我假设他们正在使用三次贝塞尔函数:
有人可以通过他们用来简化这个方程来获得这些系数的步骤吗?我假设由于 P0 是 (0,0) 可以删除第一部分,并且由于 P3 是 (1,1) 最后一部分变为 t^3,所以留下:
3 * (1-t)^2 * t * P1 + 3 * (1-t) * t^2 * P2 + t^3
他们如何简化计算多项式系数 ax、bx 和 cx?还是我离这里很远?