Функция MbFunction
Класс MbFunction объявлен в файле function.h.
Функция MbFunction является абстрактным классом, наследником классов MbRefItem и TapeBase:
В геометрическом ядре C3D реализованы следующие скалярные функции, которые являются наследниками класса MbFunction:
MbConctFunction – константная функция,
MbLineFunction – линейная функция,
MbCubicFunction – кубическая функция Эрмита,
MbCubicSplineFunction – кубическая сплайн-функция,
MdCharacterFunction – аналитическая функция.
MbFunction представляет собой скалярную функцию
скалярного параметра t, принимающего значения на отрезке [ tmin, tmax ]. Область изменения параметра функции есть отрезок [ tmin, tmax ] в одномерном пространстве. Функция f(t) должна быть однозначной и непрерывной.
Граничные значения tmin и tmax области определения параметра выдают методы функции double GetTMin() и double GetTMax(), соответственно.
Функцию будем называть периодической, если существует p > 0, такое, что f(t ± kp) = f(t), где k – целое число. Метод IsClosed() периодической функции возвращает true. Метод double GetPeriod() периодической функции или функции, которая может быть расширена до периодической, выдает период p. Область определения параметра периодической функции всегда лежит в пределах одного периода.
Основным методом функции является метод
double Value( double & t ).
Он выдаёт значение функции для заданного параметра t.
Методы
double FirstDer( double & t ),
double SecondDer( double & t ),
double ThirdDer( double & t )
выдают соответственно первую, вторую и третью производные функции для заданного параметра t. Перечисленные методы корректируют параметр функции при его выходе за пределы области определения. При выходе параметра t за пределы отрезка [ tmin, tmax ] непериодические функции смещают параметр t к ближайшей границе tmin или tmax, а периодические функции добавляют или вычитают необходимое количество периодов.
Метод
double _Value( double t )
выдаёт значение функции для заданного параметра t как в области определения параметра функции, так и за её пределами. В общем случае непериодическая функция за пределами области определения параметра продолжается по касательной в крайней точке. Исключение составляют аналитические функции. Периодические функции за пределами области определения параметра продолжаются циклически.
Методы
double _FirstDer( double t ),
double _SecondDer( double t ),
double _ThirdDer( double t )
выдают соответственно первую, вторую и третью производные функции для заданного параметра t как в области определения функции, так и за её пределами.
Функции перегружают такие методы, как
методы, обеспечивающие копирование, проверку на совпадение, проверку на возможность сделать совпадающими, делающие объекты совпадающими,
MbFunction & Duplicate(),
Boolean IsSame( const MbFunction & item ),
Boolean IsSimilar( const MbFunction & item ),
Boolean SetEqual( const MbFunction & item ),
метод, возвращающий тип из перечисления функция,
MbeFunctionType IsA(),
методы, обеспечивающие выдачу и редактирование внутренних данных объекта,
MbProperty & CreateProperty( MbePrompt name ),
void GetProperties( MbProperties & properties ),
void SetProperties( MbProperties & properties ).
Все функции, как правило, не имеют изломов. Функция MbAnaliticalFunction, задаваемая пользователем, также должна быть непрерывной и не иметь особых точек.