Инерционные характеристики модели

Для передачи инерционных характеристик модели используется класс InertiaProperties, который приведен на рис. 1:

../../../../_images/R.3.1.1.png

Рис. 1

Класс InertiaProperties объявлен в файле mip_solid_mass_inertia.h. Класс InertiaProperties содержит следующие данные о модели:

  • double area – площадь поверхности,

  • double volume – объем,

  • double mass – масса,

  • double inertia[3] – статические моменты в исходной системе координат,

  • double initial[3][3] – моменты инерции в исходной системе координат,

  • double moments[3][3] – моменты инерции в центральной системе координат,

  • double general[3] – главные центральные моменты инерции,

  • MbCartPoint3D center – центр масс,

  • MbVector3D direction[3] – векторы направлений главных осей инерции.

При инициализации класса InertiaProperties все данные принимают нулевые значения, а координаты центра масс полагаются равными NOT_INITIAL_DBL. Моменты инерции initial вычисляются в системе координат, в которой описана модель. Моменты инерции moments вычисляются в системе координат, начало которой находится в точке center, а координатные оси совпадают с осями исходной системы координат, в которой описана модель. Моменты инерции general вычисляются в главной центральной системе координат, начало которой находится в точке center, а координатные оси получены вычислением и совпадают с главными осями инерции модели. Центробежные моменты инерции в главных системах координат отсутствуют.

Векторы 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] определяет направление главной оси инерции, момент относительно которой отличается от других; двумя другими главными направлениями могут служить любые два взаимно ортогональных и ортогональных не равному нулю вектору direction[i] вектора.

Возможность использования готовых данных для отдельных элементов модели позволяют реализовать классы SolidMIAttire и AssemblyMIAttire, которые приведены на рис. 2 и рис. 3. Классы объявлены в файле mip_solid_mass_inertia.h.

../../../../_images/R.3.1.2.png

Рис. 2

../../../../_images/R.3.1.3.png

Рис. 3

Класс SolidMIAttire содержит следующие данные:

  • const MbSolid & solid – тело,

  • double density – плотность или удельная масса на единицу площади,

  • MbMatrix3D matrix – матрица преобразования тела в систему ближайшей сборки,

  • InertiaProperties * properties – назначенные инерционные характеристики тела, могут быть ноль или заданы не полностью,

  • bool ready – признак, показывающий, что характеристики не требуется считать.

Класс AssemblyMIAttire содержит следующие данные:

  • RPArray< AssemblyMIAttire > assemblies – множество сборочных единиц следующего уровня,

  • RPArray< SolidMIAttire > solids – тела сборочной единицы,

  • MbMatrix3D matrix – матрица преобразования сборочной единицы в систему ближайшей сборки,

  • InertiaProperties * properties – назначенные инерционные характеристики сборочной единицы, могут быть нулями или заданы не полностью,

  • bool ready – признак, показывающий, что характеристики не требуется считать.

Если экземпляры классов SolidMIAttire и AssemblyMIAttire содержат не нулевые properties и ready == true, то инерционные характеристики соответствующего объекта не будут вычисляться, а результат вычисления будет содержать данные из properties.

Если экземпляры классов SolidMIAttire и AssemblyMIAttire содержат не нулевые properties и ready == false, то результат вычисления будет содержать данные из properties, которые не равны NULL_EPSILON или NOT_INITIAL_DBL. Данные, которые в properties равны NULL_EPSILON или NOT_INITIAL_DBL, будут вычислены. Рассматриваемые классы позволяют смешивать рассчитанные данные с назначенными.