В общем случае невозможно сделать то, что вы просите. Вы просите перейти от 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-мерной точкой. Таким образом, вы можете решить его отдельно для каждого измерения и найти среднее значение, или быть немного более изощренным и минимизировать квадрат ошибки.
person
JCooper
schedule
30.01.2012