C3D Kernel  104598
Открытые типы | Открытые члены | Защищенные члены | Защищенные данные
Класс MbConeSpiral

Коническая спираль. Подробнее...

Граф наследования:MbConeSpiral:
Inheritance graph
[см. легенду]
Граф связей класса MbConeSpiral:
Collaboration graph
[см. легенду]

Полный список членов класса

Открытые типы

enum  ConeSpiralType { cst_Plane, cst_Cylindrical, cst_Conical }

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

 MbConeSpiral (const MbCartPoint3D &p0, const MbCartPoint3D &p1, const MbCartPoint3D &p2, double st, bool left=false)
 Цилиндрическая спираль по трем точкам и шагу.
 MbConeSpiral (const MbPlacement3D &pl, double radius1, double radius2, double height, double st)
 Коническая спираль по основанию, радиусам двух оснований, и высоте с шагом.
 MbConeSpiral (double radius, double angle, double height, double st, const MbPlacement3D &pl)
 Коническая спираль , радиусу, углу уклона, высоте с шагом, и основанию.
 MbConeSpiral (double radius, double st, const MbPlacement3D &pl, double t1, double t2)
 Цилиндрическая спираль по радиусу основания, шагу, основанию, и двум параметрам.
 MbConeSpiral (double r0, double h, double tgAH, const MbPlacement3D &pl, double u1, double v1, double u2, double v2)
 Коническая спираль по радиусу основания, высоте, тангенсу угла наклона, основанию, и параметрам.
virtual ~MbConeSpiral ()
 Деструктор.
 VISITING_CLASS (MbConeSpiral)
void Init (const MbConeSpiral &init)
 Инициализация конической спирали по конической спирали.
void Init (const MbPlacement3D &place)
 Инициализация цилиндрической спирали по основанию.
void Init (double radius1, double radius2, double height, double st)
 Инициализация конической спирали по радиусам оснований, высоте и шагу.
void Init (const MbPlacement3D &place, double radius1, double radius2, double height, double st)
 Инициализация конической спирали по основанию, радиусам оснований, и высоте с шагом.
virtual MbeSpaceType IsA () const
 Получить тип объекта.
virtual MbSpaceItemDuplicate (MbRegDuplicate *=NULL) const
 Создать копию объекта.
virtual bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const
 Определить, являются ли объекты равными.
virtual void GetProperties (MbProperties &)
 Выдать свойства объекта.
virtual void SetProperties (const MbProperties &)
 Изменить свойства объекта.
virtual void PointOn (double &t, MbCartPoint3D &pnt) const
 Вычислить точку на кривой.
virtual void FirstDer (double &t, MbVector3D &fd) const
 Вычислить первую производную.
virtual void SecondDer (double &t, MbVector3D &sd) const
 Вычислить вторую производную.
virtual void ThirdDer (double &t, MbVector3D &td) const
 Вычислить третью производную.
virtual void _PointOn (double t, MbCartPoint3D &pnt) const
 Вычислить точку на кривой и её продолжении.
virtual void _FirstDer (double t, MbVector3D &fd) const
 Вычислить первую производную на кривой и её продолжении.
virtual void _SecondDer (double t, MbVector3D &sd) const
 Вычислить вторую производную на кривой и её продолжении.
virtual void _ThirdDer (double t, MbVector3D &td) const
 Вычислить третью производную на кривой и её продолжении.
virtual void Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const
 Вычислить значения точки и производных для заданного параметра.
virtual double Step (double t, double sag) const
 Вычислить шаг параметра.
virtual double DeviationStep (double t, double angle) const
 Вычислить шаг параметра.
virtual double MetricStep (double t, double length) const
 Вычислить шаг параметра.
virtual MbCurveGetMap (const MbMatrix3D &, MbRect1D *pRgn=NULL, VERSION version=Math::DefaultMathVersion(), bool *coincParams=NULL) const
 Построить плоскую проекцию некоторой части пространственной кривой.
virtual MbCurve3DTrimmed (double t1, double t2, int sense) const
 Построить усеченную кривую.
virtual void Inverse (MbRegTransform *iReg=NULL)
 Изменить направление кривой.
virtual MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo &) const
 Построить NURBS копию кривой.
virtual double CalculateLength (double t1, double t2) const
 Вычислить метрическую длину кривой.
virtual bool NearPointProjection (const MbCartPoint3D &p, double &t, bool ext, MbRect1D *tRange=NULL) const
 Найти проекцию точки на кривую.
virtual void SetStep (double s)
virtual double GetSpiralRadius (double t) const
virtual void GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint3D > &pnts) const
 Выдать n точек кривой с равными интервалами по длине дуги.
virtual bool GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const
 Дать поверхностную кривую, если пространственная кривая поверхностная (после использования вызывать DeleteItem на аргументы).
double GetAlpha () const
double GetTgAlpha () const
void SetAlpha (double a)
double GetR () const
void FastInverse ()
double GetStepD2PI () const
void GetSpiralDir (MbVector3D &dir) const
ConeSpiralType GetType () const
 Узнать тип конической спирали

Защищенные члены

 MbConeSpiral (const MbConeSpiral &init)
 Конструктор копирования.

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

double radius
 Радиус основания.
double tgAlpha
 Тангенс угла полуконуса.
double stepd2pi
 Шаг спирали, деленный на 2*pi.

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

Плоская, коническая или цилиндрическая спираль. Ось спирали направлена вдоль оси Z локальной системы координат.
Параметр кривой отсчитывается от оси position.axisX локальной системы координат. Радиус-вектор кривой в методе PointOn(double&t,MbCartPoint3D&r) описывается векторной функцией:
для плоской спирали:
r(t) = position.origin + (position.axisX rad cos(t)) + (position.axisY rad sin(t)), где rad = radius + (stepd2pi t), если tgAlpha = pi/2 или rad = radius - (stepd2pi t), если tgAlpha = -pi/2; для цилиндрической спирали:
r(t) = position.origin + (position.axisZ stepd2pi t) + (position.axisX radius cos(t)) + (position.axisY radius sin(t)); для конической спирали:
r(t) = position.origin + (position.axisZ stepd2pi t) + (position.axisX rad cos(t)) + (position.axisY rad sin(t)), где rad = radius + (tgAlpha stepd2pi t).


Перечисления

Элементы перечислений:
cst_Plane 

Плоская спираль.

cst_Cylindrical 

Цилиндрическая спираль.

cst_Conical 

Коническая спираль.


Методы

virtual MbSpaceItem& MbConeSpiral::Duplicate ( MbRegDuplicate iReg = NULL) const [virtual]

Создать копию объекта с использованием регистратора. Регистратор используется для предотвращения многократного копирования объекта. Если объект содержит ссылки на другие объекты, то вложенные объекты так же копируются. Допустимо не передавать регистратор в функцию. Тогда будет создана новая копия объекта. При копировании одиночного объекта или набора не связанных между собой объектов допустимо не использовать регистратор. Регистратор необходимо использовать, если надо последовательно копировать несколько взаимосвязанных объектов. Возможно, что связь объектов обусловлена наличием в них ссылок на общие объекты. Тогда, при копировании без использования регистратора, можно получить набор копий, содержащих ссылки на разные копии одного и того же вложенного объекта, что ведет к потере связи между копиями.

Аргументы:
[in]iReg- Регистратор.
Возвращает:
Копия объекта.

Замещает MbSpiral.

virtual bool MbConeSpiral::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const [virtual]

Равными считаются однотипные объекты, все данные которых одинаковы (равны).

Аргументы:
[in]item- Объект для сравнения.
[in]accuracy- Точность сравнения.
Возвращает:
Равны ли объекты.

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

virtual void MbConeSpiral::GetProperties ( MbProperties properties) [virtual]

Выдать внутренние данные (свойства) объекта для их просмотра и модификации.

Аргументы:
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbSpiral.

virtual void MbConeSpiral::SetProperties ( const MbProperties properties) [virtual]

Изменение внутренних данных (свойств) объекта выполняется копированием соответствующих значений из присланного объекта.

Аргументы:
[in]properties- Контейнер для внутренних данных объекта.

Замещает MbSpiral.

virtual void MbConeSpiral::PointOn ( double &  t,
MbCartPoint3D p 
) const [virtual]

Скорректировать параметры при выходе их за пределы области определения и вычислить точку на кривой.

Аргументы:
[in]t- Параметр curve.
[out]p- Вычисленная точка на кривой.

Замещает MbSpiral.

virtual void MbConeSpiral::_PointOn ( double  t,
MbCartPoint3D p 
) const [virtual]

Вычислить точку на кривой в том числе и за пределами области определения параметрa.

Аргументы:
[in]t- Параметр curve.
[out]p- Вычисленная точка на кривой.

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

virtual void MbConeSpiral::Explore ( double &  t,
bool  ext,
MbCartPoint3D pnt,
MbVector3D fir,
MbVector3D sec,
MbVector3D thir 
) const [virtual]

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

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

Замещает MbSpiral.

virtual double MbConeSpiral::Step ( double  t,
double  sag 
) const [virtual]

Вычислить шаг параметра для аппроксимации кривой по величине прогиба кривой. Вычисление шага проходит с учетом радиуса кривизны. Шаг аппроксимации кривой выбирается таким образом, чтобы отклонение кривой от ее полигона не превышало заданную величину прогиба.

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]sag- Максимально допустимая величина прогиба.
Возвращает:
Величина шага по параметру в заданной точке.

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

virtual double MbConeSpiral::DeviationStep ( double  t,
double  ang 
) const [virtual]

Вычислить шаг параметра для аппроксимации кривой по углу отклонения касательной. Шаг аппроксимации кривой выбирается таким образом, чтобы угловое отклонение касательной кривой в следующей точке не превышало заданную величину ang.

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]ang- Максимально допустимый угол отклонения касательной.
Возвращает:
Величина шага по параметру в заданной точке.

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

virtual double MbConeSpiral::MetricStep ( double  t,
double  length 
) const [virtual]

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

Аргументы:
[in]t- Параметр, определяющий точку на кривой, в которой надо вычислить шаг.
[in]len- Максимальная метрическая длина шага вдоль кривой.
Возвращает:
Величина шага по параметру в заданной точке.

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

virtual MbCurve* MbConeSpiral::GetMap ( const MbMatrix3D into,
MbRect1D pRegion = NULL,
VERSION  version = Math::DefaultMathVersion(),
bool *  coincParams = NULL 
) const [virtual]

Построить плоскую проекцию некоторой части пространственной кривой.

Аргументы:
[in]into- Матрица преобразования из глобальной системы координат в видовую плоскость.
[in]pRegion- Отображаемая часть кривой (paramRegion.x = t1, paramRegion.y = t2), по умолчанию - вся кривая.
[in]version- Версия, по умолчанию - последняя.
[in,out]coincParams- Флаг совпадения параметризации исходной кривой и ее проекции
если coincParams != NULL, функция попытается сделать проекцию с совпадающей параметризацией
если в результате *coincParams = true, у проекции параметризация совпадает с параметрицацией исходной кривой.
Возвращает:
Двумерная проекция кривой.

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

virtual MbCurve3D* MbConeSpiral::Trimmed ( double  t1,
double  t2,
int  sense 
) const [virtual]

Строит усеченную кривую, начало которой соответствует точке с параметром t1 и конец - точке с параметром t2. Можно изменить направление полученной кривой относительно исходной с помощью параметра sense. Если кривая замкнута, можно получить усеченную кривую, проходящую через начало кривой.
В случае замкнутой или периодической кривой три параметра sense, t1 и t2 однозначно определяют результат. В случае разомкнутой кривой параметр sense и параметрами усечения должны соответствовать друг другу:
1) если sense == 1, то t1 < t2,
2) если sense == -1, то t1 > t2.
Если есть несоответствие между sense и параметрами усечения, то приоритетным параметром считается sense. Если параметры t1 и t2 равны и кривая замкнута, в результате должны получить замкнутую кривую.

Аргументы:
[in]t1- Параметр, соответствующий началу усеченной кривой.
[in]t2- Параметр, соответствующий концу усеченной кривой.
[in]sense- Направление усеченной кривой относительно исходной.
sense = 1 - направление кривой сохраняется. sense = -1 - направление кривой меняется на обратное.
Возвращает:
Построенная усеченная кривая.

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

virtual MbNurbs3D* MbConeSpiral::NurbsCurve ( const MbCurveIntoNurbsInfo nInfo) const [virtual]

Строит NURBS кривую, аппроксимирующую заданную в диапазоне параметров [t1, t2] с заданным направлением. По возможности, строит точную кривую, возможно с кратными узлами. Количеством узлов для NURBS определяется в зависимости от кривой.

Аргументы:
[in]t1- Параметр, соответствующий началу аппроксимируемой части кривой.
[in]t2- Параметр, соответствующий концу аппроксимируемой части кривой.
[in]sense- Совпадает ли направление возрастания параметра вдоль NURBS кривой с направлением на исходной кривой. sense > 0 - направление совпадает.
[in]nInfo- Параметры преобразования кривой в NURBS.
Возвращает:
Построенная NURBS кривая или NULL при неуспешном построении.

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

virtual double MbConeSpiral::CalculateLength ( double  t1,
double  t2 
) const [virtual]

Вычислить метрическую длину разомкнутой кривой от параметра t1 до t2. Должно выполнятся условие t1 < t2.

Аргументы:
[in]t1- Начальный параметр отрезка кривой.
[in]t2- Конечный параметр отрезка кривой.
Возвращает:
Длина кривой.

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

virtual bool MbConeSpiral::NearPointProjection ( const MbCartPoint3D pnt,
double &  t,
bool  ext,
MbRect1D tRange = NULL 
) const [virtual]

Найти ближайшую проекцию точки на кривую или ее продолжение по заданному начальному приближению. Если задан диапазон изменения параметра tRange - то надо найти проекцию в заданном диапазоне. Диапазон параметра может выходить за область определения параметра кривой. Используется метод Ньютона.

Аргументы:
[in]pnt- Заданная точка.
[in,out]t- На входе - начальное приближение, на выходе - параметр кривой, соответствующий ближайшей проекции.
[in]ext- Флаг, определяющий, искать ли проекцию на продолжении кривой (если true, то искать).
[in]tRange- Диапазон изменения параметра, в котором надо найти решение.
Возвращает:
true - если найдена проекция, удовлетворяющая всем входным условиям.

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


Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы