Задать вопрос
  • Как получить значение Y на кривой безье по X?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Антон Мудренок , как вы категорично говорите что никак нельзя... а если очень хочется?

    Пусть есть четыре точки

    A(x_%7B0%7D%2C%20y_%7B0%7D)%2C%20...%2C%

    Обычно кривая задается параметрически вот в таком виде

    x(t)%20%3D%20(1%20%E2%80%93%20t)%5E3%20xy(t)%20%3D%20(1%20%E2%80%93%20t)%5E3%20y

    Если произвести нехитрые преобразования получаем более привычные взгляду кубические уравнения относительно t

    x(t)%20%3D%20(%E2%80%93x_%7B0%7D%20%2B%2

    И аналогично для y(t).

    Если мы рисуем только из A(0,0) в D(1,1) (имеется в виду вот такая картинка) - можно упростить полученное уравнение (а еще лучше привести его сразу к каноническому виду, но это уже для автора вопроса задачка)

    0%20%3D%20(3x_%7B1%7D%20%E2%80%93%203x_%

    Тут и начинается собственно алгоритм, который нам нужен:
    • Задаем x(t)
    • решаем кубическое уравнение относительно t (например по формуле Кардано), получаем 3 корня, отбрасываем комплексные
    • оставшиеся подставляем в уравнение для y(t) - получаем необходимые значения y


    (Если рисуем из A(0,0) в D(1,1) и координаты остальных точек также от 0 до 1, то всегда будет получаться один корень)

    Так что в целом - можно посчитать необходимые значения с достаточно большой точностью
    Ответ написан
    5 комментариев