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

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

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

2 ответа

Решение

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

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 координат.

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

P0 - ваша первая точка на кривой, где t = 0, P3 - ваша последняя точка на кривой, где t = 1, P1 и P2 - ваши контрольные точки.

Другие вопросы по тегам