从维基百科的Bezier 文章中,通过一些实用的微积分知识,您可以将公式转换为计算机程序,如下面的伪 C# 代码清单。我用二次样条做,但很容易翻译成另一个。
// Quadratic spline, with three given points
// B(t) = (1-t)^2P(0) + 2*tP(1) + t^2P(2)
// where T is a real number in the interval [0, 1]
public void DrawQuadSpline(Point p0, Point p1, Point p2, int steps)
{
Point next = p0;
Point previous = p0;
double tStep = 1 / ((float) steps);
double t = 0;
for (int i = 0; i < steps; i++)
{
float x = CalculateQuadSpline(P0.x, P1.x, P2.x, t);
float y = CalculateQuadSpline(P0.y, P1.y, P2.y, t);
Point next = new Point(x, y);
drawLine(previous, next);
previous = next;
t = t + tStep;
}
}
private void CalculateQuadSpline(float z0, float z1, float z2, float t)
{
return (1.0-t)*(1.0-t)*z0 + 2.0*t*z1 + t*t*z2;
}
它可能需要一些调整,因为我以前只在 Java 中做过,但基本上就是这样。