我有一个关于通过控制点弯曲公式的问题。
如您所知,HTML Canvas有quadraticCurveTo(x1, y1, x2, y2)
,其中x1 and x2
是控制点。
但是,当您尝试使用它绘制笔划时,笔划将永远不会触及控制点。
所以我们有这个公式:
x1 = xt * 2 - (x0 + x2) / 2;
y1 = yt * 2 - (y0 + y2) / 2;
(xt, yt)
=你想要弯曲的点。 t
为切线,因为它在该点垂直90度。
重新计算控制点位置。
我从一本书中得到了这个公式,但这本书没有解释它是如何衍生出来的。我试过google但是徒劳无功。
任何人都知道如何推导出这个公式?
谢谢, 维恩。
答案 0 :(得分:3)
二次贝塞尔曲线由等式描述:
x(t) = x0 * (1-t)^2 + 2 * x1 * t * (1 - t) + x2 * t^2
(和y(t)类似)。
如果我们应用参数值t = 1/2(在某种程度上 - 曲线的中间),我们将得到你的公式:
x(t=1/2) = xt = x0 * 1/4 + 2 * x1 * 1/4 + x2 * 1/4
然后
x1/2 = xt - (x0 + x2)/4
x1 = 2 * xt - (x0 + x2)/2
答案 1 :(得分:0)
这称为Spline。更重要的是,他们似乎正在使用Bezier Curve。