В общем случае невозможно выполнить то, что вы просите. Вы просите перейти с 7 степеней свободы до 4, но сохраняете тот же результат. Репрезентативная мощность системы с более низкой степенью свободы не может соответствовать мощности более высокой. Единственный раз, когда это было бы возможно, - это если бы более сложная кривая все же оказалась в более простом пространстве Например, если ваши две кривые Безье получены путем деления одной родительской кривой с точками R0, R1, R2, R3
. Используя алгоритм де Кастельжау, мы можем сгенерировать две новые кривые P
и Q
, которые лежат на одной исходной кривой и разделяют точку на расстоянии t
вдоль исходной кривой (где t
находится в [0,1]
).
P0 = R0
P1 = R0*(1-t) + R1*t
X = R1*(1-t) + R2*t
P2 = P1*(1-t) + X*t
Q3 = R3
Q2 = R2*(1-t) + R3*t
Q1 = X*(1-t) + Q2*t
Q0 = P3 = P2*(1-t) + Q1*t
Если эти отношения не соответствуют вашим исходным точкам, вам придётся составить приближение. Но вы можете сойти с ума, притворившись, что отношения верны, и просто инвертировать уравнения:
R1 = (P1 - P0*(1-t))/t
R2 = (Q2 - Q3*t)/(1-t)
Где
t = (Q0 - P2)/(Q1 - P2)
Это последнее уравнение является проблемой, потому что, если P2, Q0, Q1
не является ко-линейным, оно не будет работать точно. t
является скаляром, но Q1-P2
обычно является n-мерной точкой. Таким образом, вы можете решить ее отдельно для каждого измерения и найти среднее значение, или быть немного более сложным и минимизировать квадрат ошибки.