2012-03-14 49 views
6

我有一個關於通過控制點彎曲公式的問題。如您所知,HTML畫布有quadraticCurveTo(x1, y1, x2, y2)x1 and x2是控制點。解釋 - 通過控制點曲線的公式

但是,當您嘗試使用它繪製筆畫時,筆畫將永遠不會觸摸控制點。

所以我們有這樣的公式:

x1 = xt * 2 - (x0 + x2)/2; 
y1 = yt * 2 - (y0 + y2)/2; 

(xt, yt) =您通過想曲線的交點。切線,因爲它在那個點上是90度垂直。

重新計算控制點的位置。

我從一本書中得到了這個公式,但是這本書沒有解釋它是如何派生的。我嘗試谷歌,但徒勞無功。

任何人都知道這個公式是如何派生的?

謝謝, 維恩。

+0

這是從http://stackoverflow.com/questions/6711707/draw-a-quadratic-bezier-curve-through-three-give任何人想知道的點數 – mowwwalker 2013-03-15 03:15:35

回答

2

二次貝塞爾曲線由方程描述:

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

+0

感謝您的幫助!這很棒。 – Vennsoh 2012-03-16 01:45:05

0

這叫做Spline。更重要的是,他們似乎正在使用Bezier Curve

+0

謝謝,但我仍然沒有得到它如何x1 = xt * 2 - (x0 + x2)/ 2; y1 = yt * 2 - (y0 + y2)/ 2; y1 = y2 *正在派生。 – Vennsoh 2012-03-14 22:03:42

+0

@Vennsoh:編輯我的答案,我相信他們正在使用二次貝塞爾曲線。查看鏈接的wiki文章中的推導。 – mindvirus 2012-03-14 22:17:16