Описание проблемы
Я пытаюсь понять и реализовать глобальную аппроксимацию кривой, как предлагается здесь:
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-APP-global.html
Для реализации алгоритма необходимо:вычислить коэффициенты базовой функции, как описано здесь:
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html
У меня проблемы с наведением головы на некоторые детали.
- Сначала возникли проблемыс переменной номенклатурой. В частности, меня смущает тот факт, что в качестве параметра функции , а также вход и . В настоящее время я предполагаю, что сначала я решаю, сколько векторов узлов я хочу найти для моего приближения. Допустим, я хочу 10. Итак, мои параметры:
Я предполагаю, что это входной параметр в алгоритме расчета коэффициента?
Причина, по которой это
сбило меня с толку, заключается в следующем предложении:
Пусть u находится в пределах узла
Если входной параметр был одним из элементов вектора узла , то былнет необходимости в интервале. Поэтому я предполагаю, что на самом деле является одним из этих элементов (?), Определенных ранее:
Это предположение верно?
Самый важный вопрос. Я пытаюсь заставить свой N работать с первой из двух ссылок,
, то есть , реализацией
Global Curve Approximation . Когда я смотрю на размеры матрицы (где упоминаются размеры P, Q, N), кажется, что N должен иметь
n строк и
h-1 столбцов. Это означает, что N имеет строки, равные количеству точек данных, и столбцы, равные степени кривой минус один. Однако, когда я смотрю на детали реализации N во второй ссылке, строка N инициализируется элементами
n . Я имею в виду следующее:
Инициализировать N [0..n] в 0;// инициализация
Но мне также нужно рассчитать N для всех параметров , которые соответствуют моим параметрам , которые в свою очередь соответствуютточки данных. Таким образом, полученная матрица имеет размерность ( n x n )
. Это не соответствует ранее упомянутому ( n x ( h - 1 ) )
.
Чтобы пойти дальше, в ссылке, описывающей алгоритм аппроксимации, N используется для вычисления Q. Однако непосредственно после этого меня просят вычислить N, которое, якобы, у меня уже было, как еще я бы рассчитал Q? Это даже тот же N? Нужно ли мне вычислять новый N для желаемого количества контрольных точек?
Заключение
Если у кого-нибудь есть полезная информация по этому вопросу - пожалуйста, поделитесь. Я стремлюсь реализовать это, используя C ++ с Eigen для его полезности по для решения M * P = Q
и матричных вычислений. В настоящее время я в растерянности, хотя. Все кажется более или менее ясным, за исключением N и особенно его размеров и того, нужно ли его вычислять несколько раз или нет.
Дополнительные носители
На последнем изображении предполагается, что "[...] использовалось ранее при вычислении Q"