Описание проблемы
Я пытаюсь понять и реализовать глобальную аппроксимацию кривой, как предлагается здесь:
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. Итак, мои параметры:
![enter image description here](https://i.stack.imgur.com/o3plT.gif)
Я предполагаю, что это входной параметр
в алгоритме расчета коэффициента?
Причина, по которой это
![![u](https://chart.googleapis.com/chart?cht=tx&chl=%5Csqrt%7Bu%7D)](https://i.stack.imgur.com/tzRgz.gif)
сбило меня с толку, заключается в следующем предложении:
Пусть u находится в пределах узла ![enter image description here](https://i.stack.imgur.com/G3TtS.gif)
Если входной параметр
был одним из элементов вектора узла
, то былнет необходимости в интервале. Поэтому я предполагаю, что
на самом деле является одним из этих элементов (
?), Определенных ранее:
![enter image description here](https://i.stack.imgur.com/o3plT.gif)
Это предположение верно?
Самый важный вопрос. Я пытаюсь заставить свой 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 и особенно его размеров и того, нужно ли его вычислять несколько раз или нет.
Дополнительные носители
![calculation of N](https://i.stack.imgur.com/zFHG2.png)
![Calculate approximating curve](https://i.stack.imgur.com/PEknQ.png)
На последнем изображении предполагается, что "[...] использовалось ранее при вычислении Q"