Попробовал решить задачу.
Пришел к выводу, что не понимаю откуда "ноги растут" в выражении - откуда оно берется и какой смысл несёт.
c3 * t^3 + c2 * t^2 + c1 * t = user_T
и почему
q1 = W1 / 3
q2 = 1 - W2 / 3
c1 = 3.0 * q1;
c2 = 3.0 * (-2.0 * q1 + q2);
c3 = 1 + 3.0 * (q1 - q2);
Подставляя разные значения вместо W1 и W2 получаем практически произвольные кривые для нахождения t, причем не из какого-то фиксированного диапазона [0,1] (см.аттач).
Вопрос 1 - что это и как конкретно с этим работают?
Да, это место действительно мозголомное
"Чего хочет юзер" - см аттач. Это "значение одной из компонент от ВРЕМЕНИ" (не кривая на плоскости). Синие вектора - это скорости (точнее тангенсы углов касательных). А вот длины этих векторов - веса. Формулы для коэффициентов "с" я просто передрал. Предполагаю что выводятся они так: в ур-е кривой подставляются новые управляющие точки
P1' = P0 + (P1 - P0) * W1
P2' = P3 - (P3 - P2) * W2
И берется производная ф-ции bezier(func(user_T)) по user_T. При этом производные func(user_T) по user_T в крайних точках известны - они те же самые что для W1 = W2 = 1. (скорости там какими были такими и остались при любых W1 и W2). Если всю эту бадягу расписать - то получим коэффициенты "c" зависящие только от W1 и W2 (ну это я так думаю)
Точно НЕТ, я сначала тоже клюнул на это взвешивание, долго бился - ну не работает оно как надо! Ключевой момент/соображение - веса W1 и W2 НЕ меняют скоростей в крайних точках