C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Inertial properties of solid. More...
#include <mip_solid_mass_inertia.h>
Public Member Functions | |
InertiaProperties () | |
Constructor. More... | |
InertiaProperties (const InertiaProperties &other) | |
Copy constructor. | |
~InertiaProperties () | |
Destructor. | |
void | Init () |
Initialization. More... | |
bool | CheckData () |
Check data. More... | |
void | CalculateIntegrals (const RPArray< MbFace > &faces, bool closed, double density, double deviateAngle, IfProgressIndicator *progress) |
Determine mass-inertial properties. More... | |
void | CalculateProperties (const RPArray< MbFace > &faces, bool closed, double density, bool calculateAll, double deviateAngle, IfProgressIndicator *progress) |
Determine mass-inertial properties. More... | |
void | CalculateIntegrals (const MbMesh &mesh, double density) |
Determine mass-inertial properties. More... | |
void | CalculateProperties (const MbMesh &mesh, double density, bool calculateAll) |
Determine mass-inertial properties. More... | |
void | GetIntegrals (const InertiaProperties &etalon) |
Calculate integrals of inertia. More... | |
void | CrossIntegrals (const InertiaProperties &prop) |
Consider partially defined properties. More... | |
bool | Calculate () |
Calculate principal central coordinate system. More... | |
bool | CalculateCenter (bool isCheckData=true) |
Calculate center of mass and central moments of inertia. More... | |
bool | CalculateGeneral () |
Calculate principal central moments of inertia. More... | |
void | Transform (const MbMatrix3D &m) |
Transform. More... | |
void | IntegralsTransform (const MbMatrix3D &m) |
Transform. More... | |
void | Add (const InertiaProperties &) |
Add fields of other object to current. | |
void | ChangeDensity (double density) |
Change density. | |
bool | IsSame (const InertiaProperties &other, double accuracy) const |
Determine whether objects are equal. | |
void | operator= (const InertiaProperties &) |
Assignment operator. | |
Public Attributes | |
double | area |
Surface area. | |
double | volume |
Volume. | |
double | mass |
Mass. | |
double | inertia [c3d::SPACE_DIM] |
Static moments. | |
double | initial [c3d::SPACE_DIM][c3d::SPACE_DIM] |
Moments of inertia relative to source coordinate axes. | |
double | moments [c3d::SPACE_DIM][c3d::SPACE_DIM] |
Moments of inertia relative to central coordinate axes. | |
double | general [c3d::SPACE_DIM] |
Principal central moments of inertia. | |
MbCartPoint3D | center |
Center of gravity. | |
MbVector3D | direction [c3d::SPACE_DIM] |
Direction vectors of the principal central axes of inertia. | |
Inertial properties of solid.
Inertial properties of solid. Vectors direction give directions of the principal axes of inertia.
If all principal moments of inertia (general[i] i=1,2,3) different, all vectors (direction[i] i=1,2,3) not zero.
If all principal moments of inertia (general[i] i=1,2,3) are the same, all vectors (direction[i] i=1,2,3) zero and principal directions can be any three mutually orthogonal vectors.
If two of the three principal moments of inertia are equal, for example (general[j]==general[k]), then two of the three vectors are zero (direction[j]=direction[k]=0), a non-zero vector (direction[i]) defines the direction of the principal axis of inertia, time general[i] with respect to which differs from other.
|
inline |
Constructor.
Constructor of inertial properties with default fields values.
Default values mean that the parameters are not set.
void InertiaProperties::Init | ( | ) |
Initialization.
Initialization of inertial properties with default fields values.
Default values mean that the parameters are not set.
bool InertiaProperties::CheckData | ( | ) |
Check data.
Check data for correctness.
void InertiaProperties::CalculateIntegrals | ( | const RPArray< MbFace > & | faces, |
bool | closed, | ||
double | density, | ||
double | deviateAngle, | ||
IfProgressIndicator * | progress | ||
) |
Determine mass-inertial properties.
Determine mass-inertial properties of set of faces.
Each solid is represented by a set of faces, describing its surface. Determination of volume, center of mass and moments of inertia of the solid leads to the calculation of the volume integrals. By means of the divergence (Gauss-Ostrogradsky) theorem volume integrals of the solid are reduced to the integrals over the surfaces of the solid faces.
Numerical integration over the surface involves face parametric domain subdivision into small rectangular or triangular subdomains. Computational accuracy depends on sizes of subdomains. As driving parameter of integration domain partitioning used angular deviation of surface normal in 'deviateAngle' subdomain. Size of each subdomain is defined by condition: angular deviation of surface normal in subdomain shouldn't exceed deviateAngle.
For quadrangular subdomains integration by each surface parameter is performed using the Gauss quadratures. For triangular subdomains it is handy to transform u and v coordinates to three barycentric coordinates a, b, c, constructed by points pa, pb, pc. Coordinates of arbitrary point p=(u,v) has corresponding barycentric notation:
u = a ua + b ub + c uc,
v = a va + b vb + c vc.
Barycentric coordinates satisfy the equation: a + b + c = 1.
In all cases each surface integral is calculated as weighted summ of integrable function values inside integration domain. Calculation is performed in local coordinate system for each particular solid. Then solid properties are transformed to global coordinate system and summarized. Result is solids assembly properties in global, central and principal central coordinate system.
[in] | faces | - A set of faces. |
[in] | closed | - Closing of set of faces. |
[in] | density | - Density (closed == true) or mass per unit square (closed == false). |
[in] | deviateAngle | - Tolerance - the angular deviation of surface or curve in the neighboring points on the region of numerical integration. |
[in] | progress | - A run progress indicator. |
void InertiaProperties::CalculateProperties | ( | const RPArray< MbFace > & | faces, |
bool | closed, | ||
double | density, | ||
bool | calculateAll, | ||
double | deviateAngle, | ||
IfProgressIndicator * | progress | ||
) |
Determine mass-inertial properties.
Determine mass-inertial properties of set of faces.
[in] | faces | - A set of faces. |
[in] | closed | - Closing of set of faces. |
[in] | density | - Density (closed == true) or mass per unit square (closed == false). |
[in] | calculateAll | - If false, then performs integrals of inertia calculation, if true, then performs also calculation of center of mass, central moments of inertia, principal central moments of inertia. |
[in] | deviateAngle | - Tolerance - the angular deviation of surface or curve in the neighboring points on the region of numerical integration. |
[in] | progress | - A run progress indicator. |
Determine mass-inertial properties.
Determine mass-inertial properties of polygonal object.
[in] | mesh | - A polygonal object. |
[in] | density | - Density (closed == true) or mass per unit square (closed == false). |
void InertiaProperties::CalculateProperties | ( | const MbMesh & | mesh, |
double | density, | ||
bool | calculateAll | ||
) |
Determine mass-inertial properties.
Determine mass-inertial properties of polygonal object.
[in] | mesh | - A polygonal object. |
[in] | density | - Density or mass per unit square. |
[in] | calculateAll | - If false, then performs integrals of inertia calculation, if true, then performs also calculation of center of mass, central moments of inertia, principal central moments of inertia. |
void InertiaProperties::GetIntegrals | ( | const InertiaProperties & | etalon | ) |
Calculate integrals of inertia.
Calculate integrals of inertia by user-given moments of inertia.
Assigns the values of area, volume, mass, reference center of mass, recalculates moments of inertia relative to central coordinate axes by given reference moments of inertia.
[in] | etalon | - Reference. |
void InertiaProperties::CrossIntegrals | ( | const InertiaProperties & | prop | ) |
Consider partially defined properties.
Recalculate integrals of inertia with user-given partially defined moments of inertia.
Assigns the values of area, volume, mass, reference center of mass, moments of inertia, if reference values are defined.
Area, volume, mass, center of mass, moments of inertia of an object are not changed if corresponding reference values are not defined.
[in] | prop | - Partially defined inertial properties. |
bool InertiaProperties::Calculate | ( | ) |
Calculate principal central coordinate system.
Calculation and checking of principal central coordinate system.
Included: calculation of center of mass and central moments of inertia, calculation of principal central moments of inertia.
bool InertiaProperties::CalculateCenter | ( | bool | isCheckData = true | ) |
Calculate center of mass and central moments of inertia.
Calculate center of mass and central moments of inertia.
bool InertiaProperties::CalculateGeneral | ( | ) |
Calculate principal central moments of inertia.
Calculate principal central moments of inertia.
void InertiaProperties::Transform | ( | const MbMatrix3D & | m | ) |
Transform.
Transform data by matrix.
[in] | m | - Transformation matrix. |
void InertiaProperties::IntegralsTransform | ( | const MbMatrix3D & | m | ) |
Transform.
Transform integrals of inertia according to matrix.
[in] | m | - Transformation matrix. |