Кубическая функция Эрмита MbCubicFunction
Класс MbCubicFunction объявлен в файле cur_cubic_function.h.
Кубическая функция Эрмита MbCubicFunction описывается множеством контрольных точек valueList, множеством производных функции в контрольных точках firctList, множеством значений параметра функции в контрольных точках tList и признаком периодичности функции closed. У функции есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов функции.
Кубическая функция Эрмита при значении параметра tList[i], i = 0, 1, …, splinesCount, где splinesCount = tList.MaxIndex(), проходит через контрольную точку valueList[i] и имеет в ней производную firctList[i]. Функция построена на основе splinesCount сплайнов Эрмита третьей степени, которые гладко стыкуются между собой. Каждый кубический сплайн Эрмита описывает участок функции между двумя соседними контрольными точками. Каждый кубический сплайн Эрмита определяется двумя крайними точками и двумя производными кривой в этих точках.
При вычислении функции сначала по значению параметра t кривой определяется номер i рабочего участка (номер кубического сплайна Эрмита) из условия tList[i] ≤ t ≤ tList[i + 1]. Функция вычисляется для найденного рабочего участка по его локальному параметру w, который определяется по tList[i] и tList[i + 1].
В методе double Value( double & t ) работает функция
где
— локальный параметр рабочего участка tList[i] ≤ t ≤ tList[i + 1].
Кубическая функция Эрмита приведена на рис. 1:
Рис. 1
Область определения параметра функции располагается в пределах tmin ≤ t ≤ tmax, где tmin = tList[0], tmax = tList[splinesCount]. Функция может быть периодической.
Форма функции зависит от расположения контрольных точек, от производных функции в контрольных точках и от множества tList значений параметра в контрольных точках. При построении функции только по контрольным точкам производные firctList[i] вычисляются путём построения параболы, проходящей по трём соседним точкам valueList[i – 1], valueList[i], valueList[i + 1] при соответствующих значениях параметра tList[i – 1], tList[i], tList[i + 1], и вычисления производной параболы в средней точке.