Кубические кривые Безье - получить Y для данного X - PullRequest
9 голосов
/ 21 ноября 2011

У меня есть кубическая кривая Безье, где даны первая и последняя точки (а именно P0 (0,0) и P3 (1,1)).Две другие точки определены следующим образом: кубический Безье (0,25, 0,1, 0,25, 1,0) (X1, Y1, X2, Y2, также эти значения не должны быть меньше или больше 0 или 1 соответственно)
ТеперьЧто мне нужно сделать, чтобы получить координату Y для данного X, предполагая, что есть только одна?(Я знаю, что при определенных обстоятельствах может быть несколько значений, но давайте просто отложим их в сторону. Я здесь не занимаюсь ракетостроением, я просто хочу иметь возможность получать Y несколько раз в секунду для выполнения переходов)

Мне удалось выкопать это: y координата для заданного x кубического Безье , но я не понимаю, что означает xTarget.
О, это тоже не домашняя работа, я 'Меня немного раздражает тот факт, что в интернете нет ничего понятного о кубических кривых Безье.

1 Ответ

19 голосов
/ 22 ноября 2011

Если у вас есть

P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)

Тогда для любого t в [0,1] вы получите точку на кривой, заданную координатами

X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3

Если вы получитеx, то вам нужно найти, какие t значения в [0,1] соответствуют этой точке на кривой, а затем использовать эти t значения, чтобы найти y координату.

ВX(t) уравнение выше, установите левую сторону на значение x и подключите X0, X1, X2, X3.Это оставляет вас с кубическим полиномом с переменной t.Вы решаете это для t, затем вставляете это значение t в уравнение Y(t), чтобы получить координату y.

Решение кубического полинома сложно, носделано осторожно, используя один из методов для решения кубического полинома.

...