C3D Toolkit  Kernel - 115525, Vision - 2.6.4.29

Монотонная сплайн интерполяция класса c2 на основе однопараметрических групп диффеоморфизмов (Н.В.Осадченко). Подробнее...

#include <func_mono_smooth_function.h>

+ Граф наследования:MbMonoSmoothFunction:
+ Граф связей класса MbMonoSmoothFunction:

Открытые члены

bool Init (const c3d::DoubleVector &pars, const c3d::DoubleVector &vals, bool periodic)
 Инициализация сплайна. Подробнее...
 
virtual MbeFunctionType IsA () const
 Тип элемента.
 
virtual MbFunctionDuplicate () const
 Сделать копию элемента.
 
virtual bool IsSame (const MbFunction &other, double accuracy=LENGTH_EPSILON) const
 Являются ли объекты равными.
 
virtual bool SetEqual (const MbFunction &)
 Сделать равным.
 
virtual void GetProperties (MbProperties &)
 Выдать свойства объекта.
 
virtual void SetProperties (const MbProperties &)
 Записать свойства объекта.
 
virtual double GetTMax () const
 Вернуть максимальное значение параметра.
 
virtual double GetTMin () const
 Вернуть минимальное значение параметра.
 
virtual bool IsClosed () const
 Получить замкнутость функции.
 
virtual void SetClosed (bool)
 Установить замкнутость функции.
 
virtual double Value (double &t) const
 Значение функции для t.
 
virtual double FirstDer (double &t) const
 Первая производная по t.
 
virtual double SecondDer (double &t) const
 Вторая производная по t.
 
virtual double ThirdDer (double &t) const
 Третья производная по t.
 
virtual double _Value (double t) const
 Значение расширенной функции для t.
 
virtual double _FirstDer (double t) const
 Первая производная расширенной функции по t.
 
virtual double _SecondDer (double t) const
 Вторая производная расширенной функции по t.
 
virtual double _ThirdDer (double t) const
 Третья производная расширенной функции по t.
 
virtual void Explore (double &t, bool ext, double &val, double &fir, double *sec, double *thr) const
 Вычислить значение и производные для заданного параметра. Подробнее...
 
virtual void Inverse (MbRegTransform *iReg=nullptr)
 Изменить направление.
 
virtual double Step (double t, double sag) const
 Вычислить шаг по прогибу для заданного параметра t.
 
virtual double DeviationStep (double t, double angle) const
 Вычислить шаг по угловому отклонению для заданного параметра t.
 
virtual double MinValue (double &t) const
 Минимальное значение функции.
 
virtual double MaxValue (double &t) const
 Максимальное значение функции.
 
virtual double MidValue () const
 Среднее значение функции.
 
virtual bool IsGood () const
 Корректность функции.
 
virtual bool IsConst () const
 Является ли функция константной.
 
virtual bool IsLine () const
 Является ли функция линейной.
 
virtual void SetOffsetFunc (double off, double scale)
 Сместить функцию.
 
virtual bool SetLimitParam (double, double)
 Установить область изменения параметра.
 
virtual void SetLimitValue (size_t n, double)
 Установить значение на конце ( 1 - в начале, 2 - в конце).
 
virtual double GetLimitValue (size_t n) const
 Дать значение на конце ( 1 - в начале, 2 - в конце).
 
virtual bool InsertValue (double x, double y)
 Установить значение для параметра t.
 
virtual MbFunctionTrimmed (double t1, double t2, int sense) const
 Создать функцию из части функции между параметрами t1 и t2 c выбором направления sense.
 
virtual MbFunctionBreakFunction (double t, bool beg)
 Разбить функцию точкой с параметром t и вернуть отрезанную часть: beg == true - соранить начальную половину, beg == false - соранить конечную половину.
 
MbFunctionBreak (double t1, double t2) const
 Выделить часть функции.
 
- Открытые члены унаследованные от MbFunction
bool IsZero (double t, double accuracy=METRIC_REGION) const
 Наличие нулевого значения функции.
 
double GetTMid () const
 Вернуть середину параметрического диапазона.
 
double GetParamLength () const
 Параметрическая длина.
 
bool IsParamOn (double t, double eps) const
 Находится ли параметр в области определения функции.
 
void PrepareWrite () const
 Подготовить к записи регистрируемый объект.
 
virtual bool IsSimilar (const MbFunction &) const
 Являются ли объекты подобными.
 
virtual bool IsPeriodic () const
 Периодичность замкнутой кривой.
 
MbeNewtonResult ArgumentNewton (double value, bool ext, double funcEpsilon, size_t iterLimit, double &t) const
 
bool CuttingFunction (SArray< double > &params, bool beginSafe, double eps, RPArray< MbFunction > &cutted)
 Разбить функцию параметрами: beg == true - соранить начальную половину, beg == false - соранить конечную половину.
 
virtual void SetLimitDerive (size_t n, double newValue, double dt)
 Установить значение производной на конце ( 1 - в начале, 2 - в конце).
 
virtual double GetLimitDerive (size_t n) const
 Дать значение производной на конце ( 1 - в начале, 2 - в конце).
 
virtual void GetCharacteristicParams (std::vector< double > &tSpecific, double t1, double t2)
 Получить параметры особого поведения в интервале от t1 до t2 (для cos это Pi*n).
 
- Открытые члены унаследованные от MbRefItem
virtual MbeRefType RefType () const
 Регистрационный тип (для копирования, дублирования).
 
refcount_t GetUseCount () const
 Выдать количество ссылок (выдать количество владельцев объекта).
 
refcount_t AddRef () const
 Увеличить количество ссылок на единицу.
 
refcount_t DecRef () const
 Уменьшить количество ссылок на единицу.
 
refcount_t Release () const
 Уменьшить количество ссылок на единицу и, если количество ссылок стало равным нулю, удалить себя.
 
- Открытые члены унаследованные от TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Конструктор.
 
 TapeBase (const TapeBase &)
 Конструктор копирования
 
virtual ~TapeBase ()
 Деструктор.
 
RegistrableRec GetRegistrable () const
 Является ли потоковый класс регистрируемым.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Установить состояние регистрации потокового класса.
 
virtual ClassDescriptor GetClassDescriptor (const VersionContainer &) const =0
 Получить дескриптор класса
 
virtual const char * GetPureName (const VersionContainer &) const
 Получить имя класса.
 
virtual bool IsFamilyRegistrable () const
 Принадлежит ли объект к регистрируемому семейству.
 

Открытые статические члены

static MbFunctionCreate (const c3d::DoubleVector &pars, const c3d::DoubleVector &vals, bool yCls)
 Создание объекта.
 

Защищенные данные

c3d::DoubleVector x
 Возрастающий набор параметров.
 
c3d::DoubleVector y
 Монотонный набор значений.
 
c3d::DoubleVector bet
 Параметры beta-функций.
 
c3d::DoubleVector gam
 Параметры gamma-функций.
 
bool cls
 Периодичность набора значений.
 
double tBegin
 Начальный параметр.
 
double tEnd
 Конечный параметр.
 

Дополнительные унаследованные члены

- Защищенные члены унаследованные от MbRefItem
 MbRefItem ()
 Конструктор без параметров.
 

Подробное описание

Монотонная сплайн интерполяция класса c2 на основе однопараметрических групп диффеоморфизмов (Н.В.Осадченко).

Класс описывает сплайн-функцию, которая строится по возрастающему
набору параметров и монотонно возрастающему/убывающему набору значений.
Функция гарантирует однозначное соответствие параметр-значение. При этом
аналичиские функции, описывающие сплайн на каждом участке, стыкуются
между собой с сохранением непрерывности первой и второй производной.
(Если от функции не требуется второй порядок непрерывности, то монотонную функцию
можно построить с помощью кубической функции MbCubicFunction через инициализацию
InitMonotonic). Данная функция может быть использована, как функция репараметризации.
При этом, если репараметризуемый объект обладает свойством замкнутости, то
функция может учесть это свойство, обеспечив также второй порядок непрерывности
через шов. Функция принимает на вход при инициализации массив параметров и
значений, имеющих одинаковую размерность вне зависимости от параметра
замкнутости. Репараметризующая функция построена в виде 3х вложенных друг в друга
рациональных функций y(x)=y1+(y2-y1)*Fb(Fg(Fb((x-x1)/(x2-x1)))). Подробно ознакомится
с данным типом сплайна можно по ссылке. http://www.stfi.ru/journal/STFI_2017_03/STFI_2017_03_Osadchenko.pdf

Методы

◆ Init()

bool MbMonoSmoothFunction::Init ( const c3d::DoubleVector pars,
const c3d::DoubleVector vals,
bool  periodic 
)

Инициализация сплайна.

Аргументы
[in]pars- Возрастающий набор параметров.
[in]vals- Монотонный набор значений.
[in]periodic- Периодичность набора значений.
Возвращает
Статус операции.

◆ Explore()

virtual void MbMonoSmoothFunction::Explore ( double &  t,
bool  ext,
double &  val,
double &  fir,
double *  sec,
double *  thr 
) const
virtual

Вычислить значение и производные для заданного параметра.

Значение и производных вычисляются в пределах области определения и на расширенной оси.

Аргументы
[in]t- Параметр.
[in]ext- В пределах области определения (false), на расширенной оси (true).
[out]val- Значение.
[out]fir- Производная.
[out]sec- Вторая производная по t, если не ноль.
[out]thr- Третья производная по t, если не ноль.

Переопределяет метод предка MbFunction.


Объявления и описания членов класса находятся в файле: