C3D Kernel  104065
Открытые члены | Открытые атрибуты

Инерционные характеристики тела. Подробнее...

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

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

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

 InertiaProperties ()
 Конструктор.
 InertiaProperties (const InertiaProperties &other)
 Конструктор копирования.
 ~InertiaProperties ()
 Деструктор.
void Init ()
 Инициализация.
bool CheckData ()
 Проверить данные.
void CalculateIntegrals (const RPArray< MbFace > &faces, bool closed, double density, double deviateAngle, IfProgressIndicator *progress)
 Определить массо-центровочных характеристики.
void CalculateProperties (const RPArray< MbFace > &faces, bool closed, double density, bool calculateAll, double deviateAngle, IfProgressIndicator *progress)
 Определить массо-центровочных характеристики.
void GetIntegrals (const InertiaProperties &etalon)
 Вычислить интегралы инерции.
void CrossIntegrals (const InertiaProperties &prop)
 Учесть частично заданных характеристик.
bool Calculate ()
 Рассчитать главную центральную систему.
bool CalculateCenter ()
 Рассчитать центр масс и центральные моменты инерции.
bool CalculateGeneral ()
 Рассчитать главные центральные моменты инерции.
void Transform (const MbMatrix3D &m)
 Трансформировать.
void IntegralsTransform (const MbMatrix3D &m)
 Трансформировать.
void Add (const InertiaProperties &)
 Добавить к полям объекта полей другого объекта.
void ChangeDensity (double density)
 Изменить плотность.
bool IsSame (const InertiaProperties &other, double accuracy) const
 Являются ли объекты равными?
void operator= (const InertiaProperties &)
 Оператор присваивания.

Открытые атрибуты

double area
 Площадь поверхности.
double volume
 Объем.
double mass
 Масса.
double inertia [SPACE_DIM]
 Статические моменты.
double initial [SPACE_DIM][SPACE_DIM]
 Моменты инерции относительно исходных осей координат.
double moments [SPACE_DIM][SPACE_DIM]
 Моменты инерции относительно центральных осей координат.
double general [SPACE_DIM]
 Главные центральные моменты инерции.
MbCartPoint3D center
 Центр тяжести.
MbVector3D direction [SPACE_DIM]
 Векторы направлений главных центральных осей инерции.

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

Инерционные характеристики тела.
Векторы direction дают направления главных осей инерции.
Если все главные моменты инерции general[i] i=1,2,3 разные, то все векторы direction[i] i=1,2,3 не равны нулю.
Если все главные моменты инерции general[i] i=1,2,3 одинаковые, то все векторы direction[i] i=1,2,3 равны нулю и главными направлениями могут служить любые три взаимно ортогональных вектора.
Если два из трех главных моментов инерции равны, например general[j]==general[k], то два из трёх векторов равны нулю direction[j]=direction[k]=0, а не равный нулю вектор direction[i] определяет направление главной оси инерции, момент general[i] относительно которой отличается от других, двумя другими главными направлениями могут служить любые два взаимно ортогональных и ортогональных не равному нулю вектору direction[i] вектора.


Конструктор(ы)

InertiaProperties::InertiaProperties ( ) [inline]

Конструктор инерционных характеристик с умолчательными значениями полей.
Умолчательные значения означают, что параметры не заданы.


Методы

void InertiaProperties::Init ( )

Инициализация инерционных характеристик умолчательными значениями полей.
Умолчательные значения означают, что параметры не заданы.

bool InertiaProperties::CheckData ( )

Проверить данные на корректность.

Возвращает:
true, если данные корректны,
данные могут быть некорректны в случае нулевой площади поверхности.
void InertiaProperties::CalculateIntegrals ( const RPArray< MbFace > &  faces,
bool  closed,
double  density,
double  deviateAngle,
IfProgressIndicator progress 
)

Определить массо-центровочных характеристики набора граней.
Каждое тело представлено совокупностью граней, описывающих его поверхность. Определение объёма, центра масс и моментов инерции тела приводит к вычислению объёмных интегралов. С помощью формулы Остроградского-Гаусса интегралы по объёму тела сводятся к интегралам по поверхностям граней тела.
При численном интегрировании по поверхности область определения параметров грани разбивается на небольшие четырёхугольные или треугольные подобласти. От размеров подобластей зависит точность вычисления. В качестве управляющего параметра разбиения области интегрирования используется угловое отклонение нормали поверхности в подобласти deviateAngle. Размер каждой подобласти определён условием: угловое изменение нормали поверхности в подобласти не должно превышать deviateAngle.
Для четырёхугольных подобластей по каждому параметру поверхности интегрирование выполяется с помощью квадратурных формул Гаусса. Для треугольных областей удобно перейти от координат u и v к трём барицентрическим координатам a, b, c, построенным по точкам pa, pb, pc. Координаты произвольной точки p=(u,v) через барицентрические координаты a, b, c выражаются с помощью формул
u = a ua + b ub + c uc,
v = a va + b vb + c vc.
Барицентрические координаты удовлетворяют равенству: a + b + c = 1.
Во всех случаях каждый поверхностный интеграл вычисляется как взвешенная сумма значений интегрируемой функции внутри области интегрирования. Для каждого отдельного тела расчёт выполняется в местной системе координат. Затем характеристики тела переводятся в глобальную систему координат и суммируются. Результатом являются характеристики сборки тел в глобальной, центральной и главной центральной системе координат.

Заметки:
В многопоточном режиме выполняется параллельно (временно: многопоточность работает, только если IfProgressIndicator не определен).
Аргументы:
[in]faces- Набор граней.
[in]closed- Замкнутость набора граней.
[in]density- Плотность (closed == true) или удельная масса на единицу площади (closed == false).
[in]deviateAngle- Параметр управления точностью расчёта - угловое отклонение нормпли поверхности или касательных кривой на участке численного интегрирования.
[in]progress- Индикатор прогресса выполнения.
void InertiaProperties::CalculateProperties ( const RPArray< MbFace > &  faces,
bool  closed,
double  density,
bool  calculateAll,
double  deviateAngle,
IfProgressIndicator progress 
)

Определить массо-центровочных характеристики набора граней.

Аргументы:
[in]faces- Набор граней.
[in]closed- Замкнутость набора граней.
[in]density- Плотность (closed == true) или удельная масса на единицу площади (closed == false).
[in]calculateAll- Если false, проводится расчет интегралов инерции,
если true, то еще проводится расчет центра масс, центральных моментов инерции, главных центральных моментов инерции.
[in]deviateAngle- Параметр управления точностью расчёта - угловое отклонение нормпли поверхности или касательных кривой на участке численного интегрирования.
[in]progress- Индикатор прогресса выполнения.
void InertiaProperties::GetIntegrals ( const InertiaProperties etalon)

Вычислить интегралы инерции по заданным пользователем моментам инерции.
Присваивает себе значение площади, объема, массы, центра масс эталона, пересчитывает моменты инерции относительно центральных осей координат по заданным моментам инерции эталона.

Аргументы:
[in]etalon- Эталон.
void InertiaProperties::CrossIntegrals ( const InertiaProperties prop)

Пересчитать интегралы инерции с учётом частично заданных пользователем моментов инерции.
Присваивает себе значение площади, объема, массы, центра масс эталона, моментов инерции, если эти величины у эталона заданы.
Площадь, объем, масса, центр масс, моменты инерции объекта не изменяются, если соответствующая величина у эталона не задана.

Аргументы:
[in]prop- Частично заданные инерционные характеристики.
bool InertiaProperties::Calculate ( )

Расчёт главной центральной системы координат и проверка.
Входит: расчет центра масс и центральных моментов инерции, расчет главных центральных моментов инерции.

Возвращает:
true в случае корректных данных.
bool InertiaProperties::CalculateCenter ( )

Рассчитать центр масс и центральные моменты инерции.

Возвращает:
true в случае корректных данных.
bool InertiaProperties::CalculateGeneral ( )

Рассчитать главные центральные моменты инерции.

Возвращает:
true в случае корректных данных.
void InertiaProperties::Transform ( const MbMatrix3D m)

Трансформировать данные по матрице.

Аргументы:
[in]m- Матрица трансформации.
void InertiaProperties::IntegralsTransform ( const MbMatrix3D m)

Трансформировать интегралы инерции в соответствии с матрицей.

Аргументы:
[in]m- Матрица трансформации.

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