Объясните - формула для кривой через контрольную точку - PullRequest
7 голосов
/ 15 марта 2012

У меня есть вопрос относительно изгиба формулы через контрольную точку.Как вы знаете, 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 градусов.

Пересчитывает положение контрольной точки.

Я получил эту формулу из книги, однако книга не объясняет, как она была получена.Я пробовал гуглить, но тщетно.

Кто-нибудь знает, как получается эта формула?

Спасибо, Венн.

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Квадратичная кривая Безье описывается уравнениями:

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 голосов
/ 15 марта 2012

Это называется Сплайн .Более того, похоже, что они используют кривую Безье .

...