通过三个给定点绘制二次Bézier曲线

Ale*_*lex 24 math bezier curve quadratic

我在2D中有三个点,我想绘制一条穿过它们的二次贝塞尔曲线.如何计算中间控制点(x1y1quadTo一样)?我知道大学的线性代数但需要一些简单的帮助.

如何计算中间控制点以使曲线也通过它?

Nem*_*emo 49

设P0,P1,P2为控制点,Pc为您希望曲线通过的固定点.

然后Bezier曲线定义为

P(t) = P0*t^2 + P1*2*t*(1-t) + P2*(1-t)^2
Run Code Online (Sandbox Code Playgroud)

......其中t从零到1.

你的问题有无数的答案,因为它可能会通过你的点来获得任何t值...所以只需选择一个,如t = 0.5,并求解P1:

Pc = P0*.25 + P1*2*.25 + P2*.25

P1 = (Pc - P0*.25 - P2*.25)/.5

   = 2*Pc - P0/2 - P2/2
Run Code Online (Sandbox Code Playgroud)

那里的"P"值是(x,y)对,所以只需对x应用一次方程式,对y应用一次:

x1 = 2*xc - x0/2 - x2/2
y1 = 2*yc - y0/2 - y2/2
Run Code Online (Sandbox Code Playgroud)

...其中(xc,yc)是您希望它通过的点,(x0,y0)是起点,(x2,y2)是终点.这将为您提供一个在t = 0.5时通过(xc,yc)的Bezier.