 # Ignition Math

## API Reference

6.9.3~pre2
MassMatrix3< T > Class Template Reference

A class for inertial information about a rigid body consisting of the scalar mass and a 3x3 symmetric moment of inertia matrix stored as two Vector3's. More...

#include <ignition/math/MassMatrix3.hh>

## Public Member Functions

MassMatrix3 ()
Default Constructor, which inializes the mass and moments to zero. More...

MassMatrix3 (const T &_mass, const Vector3< T > &_ixxyyzz, const Vector3< T > &_ixyxzyz)
Constructor. More...

MassMatrix3 (const MassMatrix3< T > &_m)
Copy constructor. More...

virtual ~MassMatrix3 ()
Destructor. More...

Vector3< T > DiagonalMoments () const
Get the diagonal moments of inertia (Ixx, Iyy, Izz). More...

bool DiagonalMoments (const Vector3< T > &_ixxyyzz)
Set the diagonal moments of inertia (Ixx, Iyy, Izz). More...

Epsilon (const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >) const
Get an epsilon value that represents the amount of acceptable error in a MassMatrix3. The epsilon value is related to machine precision multiplied by the largest possible moment of inertia. More...

bool EquivalentBox (Vector3< T > &_size, Quaternion< T > &_rot, const T _tol=1e-6) const
Get dimensions and rotation offset of uniform box with equivalent mass and moment of inertia. To compute this, the Matrix3 is diagonalized. The eigenvalues on the diagonal and the rotation offset of the principal axes are returned. More...

bool InertiaMatrix (const T &_ixx, const T &_iyy, const T &_izz, const T &_ixy, const T &_ixz, const T &_iyz)
Set the moment of inertia matrix. More...

bool IsNearPositive (const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >) const
Verify that inertia values are positive semidefinite. More...

bool IsPositive (const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >) const
Verify that inertia values are positive definite. More...

bool IsValid (const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >) const
Verify that inertia values are positive semi-definite and satisfy the triangle inequality. More...

IXX () const
Get IXX. More...

Ixx () const
Get IXX. More...

bool IXX (const T &_v)
Set IXX. More...

IXY () const
Get IXY. More...

Ixy () const
Get IXY. More...

bool IXY (const T &_v)
Set IXY. More...

IXZ () const
Get IXZ. More...

Ixz () const
Get IXZ. More...

bool IXZ (const T &_v)
Set IXZ. More...

IYY () const
Get IYY. More...

Iyy () const
Get IYY. More...

bool IYY (const T &_v)
Set IYY. More...

IYZ () const
Get IYZ. More...

Iyz () const
Get IYZ. More...

bool IYZ (const T &_v)
Set IYZ. More...

IZZ () const
Get IZZ. More...

Izz () const
Get IZZ. More...

bool IZZ (const T &_v)
Set IZZ. More...

bool Mass (const T &_m)
Set the mass. More...

Mass () const
Get the mass. More...

Matrix3< T > MOI () const
returns Moments of Inertia as a Matrix3 More...

Matrix3< T > Moi () const
returns Moments of Inertia as a Matrix3 More...

bool MOI (const Matrix3< T > &_moi)
Sets Moments of Inertia (MOI) from a Matrix3. Symmetric component of input matrix is used by averaging off-axis terms. More...

Vector3< T > OffDiagonalMoments () const
Get the off-diagonal moments of inertia (Ixy, Ixz, Iyz). More...

bool OffDiagonalMoments (const Vector3< T > &_ixyxzyz)
Set the off-diagonal moments of inertia (Ixy, Ixz, Iyz). More...

bool operator!= (const MassMatrix3< T > &_m) const
Inequality test operator. More...

MassMatrix3operator= (const MassMatrix3< T > &_massMatrix)
Equal operator. More...

bool operator== (const MassMatrix3< T > &_m) const
Equality comparison operator. More...

Quaternion< T > PrincipalAxesOffset (const T _tol=1e-6) const
Compute rotational offset of principal axes. More...

Vector3< T > PrincipalMoments (const T _tol=1e-6) const
Compute principal moments of inertia, which are the eigenvalues of the moment of inertia matrix. More...

bool SetDiagonalMoments (const Vector3< T > &_ixxyyzz)
Set the diagonal moments of inertia (Ixx, Iyy, Izz). More...

bool SetFromBox (const Material &_mat, const Vector3< T > &_size, const Quaternion< T > &_rot=Quaternion< T >::Identity)
Set inertial properties based on a Material and equivalent box. More...

bool SetFromBox (const T _mass, const Vector3< T > &_size, const Quaternion< T > &_rot=Quaternion< T >::Identity)
Set inertial properties based on mass and equivalent box. More...

bool SetFromBox (const Vector3< T > &_size, const Quaternion< T > &_rot=Quaternion< T >::Identity)
Set inertial properties based on equivalent box using the current mass value. More...

bool SetFromCylinderZ (const Material &_mat, const T _length, const T _radius, const Quaternion< T > &_rot=Quaternion< T >::Identity)
Set inertial properties based on a Material and equivalent cylinder aligned with Z axis. More...

bool SetFromCylinderZ (const T _mass, const T _length, const T _radius, const Quaternion< T > &_rot=Quaternion< T >::Identity)
Set inertial properties based on mass and equivalent cylinder aligned with Z axis. More...

bool SetFromCylinderZ (const T _length, const T _radius, const Quaternion< T > &_rot)
Set inertial properties based on equivalent cylinder aligned with Z axis using the current mass value. More...

bool SetFromSphere (const Material &_mat, const T _radius)
Set inertial properties based on a material and equivalent sphere. More...

bool SetFromSphere (const T _mass, const T _radius)
Set inertial properties based on mass and equivalent sphere. More...

Set inertial properties based on equivalent sphere using the current mass value. More...

bool SetInertiaMatrix (const T &_ixx, const T &_iyy, const T &_izz, const T &_ixy, const T &_ixz, const T &_iyz)
Set the moment of inertia matrix. More...

bool SetIxx (const T &_v)
Set IXX. More...

bool SetIxy (const T &_v)
Set IXY. More...

bool SetIxz (const T &_v)
Set IXZ. More...

bool SetIyy (const T &_v)
Set IYY. More...

bool SetIyz (const T &_v)
Set IYZ. More...

bool SetIzz (const T &_v)
Set IZZ. More...

bool SetMass (const T &_m)
Set the mass. More...

bool SetMoi (const Matrix3< T > &_moi)
Sets Moments of Inertia (MOI) from a Matrix3. Symmetric component of input matrix is used by averaging off-axis terms. More...

bool SetOffDiagonalMoments (const Vector3< T > &_ixyxzyz)
Set the off-diagonal moments of inertia (Ixy, Ixz, Iyz). More...

## Static Public Member Functions

static T Epsilon (const Vector3< T > &_moments, const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >)
Get an epsilon value that represents the amount of acceptable error in a MassMatrix3. The epsilon value is related to machine precision multiplied by the largest possible moment of inertia. More...

static bool ValidMoments (const Vector3< T > &_moments, const T _tolerance=IGN_MASSMATRIX3_DEFAULT_TOLERANCE< T >)
Verify that principal moments are positive and satisfy the triangle inequality. More...

## Detailed Description

### template<typename T> class ignition::math::MassMatrix3< T >

A class for inertial information about a rigid body consisting of the scalar mass and a 3x3 symmetric moment of inertia matrix stored as two Vector3's.

## ◆ MassMatrix3() [1/3]

 MassMatrix3 ( )
inline

Default Constructor, which inializes the mass and moments to zero.

## ◆ MassMatrix3() [2/3]

 MassMatrix3 ( const T & _mass, const Vector3< T > & _ixxyyzz, const Vector3< T > & _ixyxzyz )
inline

Constructor.

Parameters
 [in] _mass Mass value in kg if using metric. [in] _ixxyyzz Diagonal moments of inertia. [in] _ixyxzyz Off-diagonal moments of inertia

## ◆ MassMatrix3() [3/3]

 MassMatrix3 ( const MassMatrix3< T > & _m )
inline

Copy constructor.

Parameters
 [in] _m MassMatrix3 element to copy

## ◆ ~MassMatrix3()

 virtual ~MassMatrix3 ( )
inlinevirtual

Destructor.

## ◆ DiagonalMoments() [1/2]

 Vector3 DiagonalMoments ( ) const
inline

Get the diagonal moments of inertia (Ixx, Iyy, Izz).

Returns
The diagonal moments.

## ◆ DiagonalMoments() [2/2]

 bool DiagonalMoments ( const Vector3< T > & _ixxyyzz )
inline

Set the diagonal moments of inertia (Ixx, Iyy, Izz).

Parameters
 [in] _ixxyyzz diagonal moments of inertia
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetDiagonalMoments(const Vector3<T> &_ixxyyzz)

References MassMatrix3< T >::SetDiagonalMoments().

## ◆ Epsilon() [1/2]

 T Epsilon ( const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE ) const
inline

Get an epsilon value that represents the amount of acceptable error in a MassMatrix3. The epsilon value is related to machine precision multiplied by the largest possible moment of inertia.

Parameters
 [in] _tolerance A factor that is used to adjust the return value. A value of zero will cause the return value to be zero. A good value is 10, which is also the MASSMATRIX3_DEFAULT_TOLERANCE.

References MassMatrix3< T >::DiagonalMoments().

## ◆ Epsilon() [2/2]

 static T Epsilon ( const Vector3< T > & _moments, const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE )
inlinestatic

Get an epsilon value that represents the amount of acceptable error in a MassMatrix3. The epsilon value is related to machine precision multiplied by the largest possible moment of inertia.

This function is used by IsValid(), IsNearPositive(), IsPositive(), and ValidMoments().

Parameters
 [in] _moments Principal moments of inertia. [in] _tolerance A factor that is used to adjust the return value. A value of zero will cause the return value to be zero. A good value is 10, which is also the MASSMATRIX3_DEFAULT_TOLERANCE.
Returns
The epsilon value computed using:
T maxPossibleMoI = 0.5 * std::abs(_moments.Sum());
return _tolerance *
std::numeric_limits<T>::epsilon() * maxPossibleMoI;

References numeric_limits::epsilon(), and Vector3< T >::Sum().

## ◆ EquivalentBox()

 bool EquivalentBox ( Vector3< T > & _size, Quaternion< T > & _rot, const T _tol = 1e-6 ) const
inline

Get dimensions and rotation offset of uniform box with equivalent mass and moment of inertia. To compute this, the Matrix3 is diagonalized. The eigenvalues on the diagonal and the rotation offset of the principal axes are returned.

Parameters
 [in] _size Dimensions of box aligned with principal axes. [in] _rot Rotational offset of principal axes. [in] _tol Relative tolerance.
Returns
True if box properties were computed successfully.
Todo:
Use a mock class to test this line

## ◆ InertiaMatrix()

 bool InertiaMatrix ( const T & _ixx, const T & _iyy, const T & _izz, const T & _ixy, const T & _ixz, const T & _iyz )
inline

Set the moment of inertia matrix.

Parameters
 [in] _ixx X second moment of inertia (MOI) about x axis. [in] _iyy Y second moment of inertia about y axis. [in] _izz Z second moment of inertia about z axis. [in] _ixy XY inertia. [in] _ixz XZ inertia. [in] _iyz YZ inertia.
Returns
True if the MassMatrix3 is valid.
Deprecated:
see bool SetInertiaMatrix(const T &, const T &, const T &, const T &, const T &, const T &)

References MassMatrix3< T >::SetInertiaMatrix().

## ◆ IsNearPositive()

 bool IsNearPositive ( const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE ) const
inline

Verify that inertia values are positive semidefinite.

Parameters
 [in] _tolerance The amount of relative error to accept when checking whether this MassMatrix3 has a valid mass and moment of inertia. Refer to Epsilon() for a description of _tolerance.
Returns
True if mass is nonnegative and moment of inertia matrix is positive semidefinite. The following is how the return value is calculated
const T epsilon = this->Epsilon(_tolerance);
return (this->mass + epsilon >= 0) &&
(this->IXX() + epsilon >= 0) &&
(this->IXX() * this->IYY() - std::pow(this->IXY(), 2) +
epsilon >= 0) &&
(this->Moi().Determinant() + epsilon >= 0);

Referenced by MassMatrix3< T >::IsValid().

## ◆ IsPositive()

 bool IsPositive ( const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE ) const
inline

Verify that inertia values are positive definite.

Parameters
 [in] _tolerance The amount of error to accept when checking whether this MassMatrix3 has a valid mass and moment of inertia. Refer to Epsilon() for a description of _tolerance.
Returns
True if mass is positive and moment of inertia matrix is positive definite. The following is how the return value is calculated
const T epsilon = this->Epsilon(_tolerance);
return (this->mass + epsilon > 0) &&
(this->IXX() + epsilon > 0) &&
(this->IXX() * this->IYY() - std::pow(this->IXY(), 2) +
epsilon > 0) &&
(this->Moi().Determinant() + epsilon > 0);

Referenced by MassMatrix3< T >::EquivalentBox().

## ◆ IsValid()

 bool IsValid ( const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE ) const
inline

Verify that inertia values are positive semi-definite and satisfy the triangle inequality.

Parameters
 [in] _tolerance The amount of error to accept when checking whether the MassMatrix3 has a valid mass and moment of inertia. This value is passed on to IsNearPositive() and ValidMoments(), which in turn pass the tolerance value to Epsilon(). Refer to Epsilon() for a description of _tolerance.
Returns
True if IsNearPositive(_tolerance) and ValidMoments(this->PrincipalMoments(), _tolerance) both return true.

## ◆ IXX() [1/2]

 T IXX ( ) const
inline

Get IXX.

Returns
IXX value
Deprecated:
See T Ixx() const

References MassMatrix3< T >::Ixx().

## ◆ Ixx()

 T Ixx ( ) const
inline

Get IXX.

Returns
IXX value

## ◆ IXX() [2/2]

 bool IXX ( const T & _v )
inline

Set IXX.

Parameters
 [in] _v IXX value
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetIxx(const T &_v)

References MassMatrix3< T >::SetIxx().

## ◆ IXY() [1/2]

 T IXY ( ) const
inline

Get IXY.

Returns
IXY value
Deprecated:
See T Ixy() const

References MassMatrix3< T >::Ixy().

## ◆ Ixy()

 T Ixy ( ) const
inline

Get IXY.

Returns
IXY value

## ◆ IXY() [2/2]

 bool IXY ( const T & _v )
inline

Set IXY.

Parameters
 [in] _v IXY value
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetIxy(const T &_v)

References MassMatrix3< T >::SetIxy().

## ◆ IXZ() [1/2]

 T IXZ ( ) const
inline

Get IXZ.

Returns
IXZ value
Deprecated:
See T Ixz() const

References MassMatrix3< T >::Ixz().

## ◆ Ixz()

 T Ixz ( ) const
inline

Get IXZ.

Returns
IXZ value

Referenced by MassMatrix3< T >::IXZ().

## ◆ IXZ() [2/2]

 bool IXZ ( const T & _v )
inline

Set IXZ.

Parameters
 [in] _v IXZ value
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetIxz(const T &_v)

References MassMatrix3< T >::SetIxz().

## ◆ IYY() [1/2]

 T IYY ( ) const
inline

Get IYY.

Returns
IYY value
Deprecated:
See T Iyy() const

References MassMatrix3< T >::Iyy().

## ◆ Iyy()

 T Iyy ( ) const
inline

Get IYY.

Returns
IYY value

## ◆ IYY() [2/2]

 bool IYY ( const T & _v )
inline

Set IYY.

Parameters
 [in] _v IYY value
Returns
True if the MassMatrix3 is valid.
Deprecated:
see bool SetIyy(const T &_v)

References MassMatrix3< T >::SetIyy().

## ◆ IYZ() [1/2]

 T IYZ ( ) const
inline

Get IYZ.

Returns
IYZ value
Deprecated:
See T Iyz() const

References MassMatrix3< T >::Iyz().

## ◆ Iyz()

 T Iyz ( ) const
inline

Get IYZ.

Returns
IYZ value

Referenced by MassMatrix3< T >::IYZ().

## ◆ IYZ() [2/2]

 bool IYZ ( const T & _v )
inline

Set IYZ.

Parameters
 [in] _v IYZ value
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetIyz(const T &_v)

References MassMatrix3< T >::SetIyz().

## ◆ IZZ() [1/2]

 T IZZ ( ) const
inline

Get IZZ.

Returns
IZZ value
Deprecated:
See T Izz() const

References MassMatrix3< T >::Izz().

## ◆ Izz()

 T Izz ( ) const
inline

Get IZZ.

Returns
IZZ value

Referenced by MassMatrix3< T >::IZZ().

## ◆ IZZ() [2/2]

 bool IZZ ( const T & _v )
inline

Set IZZ.

Parameters
 [in] _v IZZ value
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetIzz(const T &_v)

References MassMatrix3< T >::SetIzz().

## ◆ Mass() [1/2]

 bool Mass ( const T & _m )
inline

Set the mass.

Parameters
 [in] _m New mass value.
Returns
True if the MassMatrix3 is valid.
Deprecated:
bool SetMass(const T &_m)

References MassMatrix3< T >::SetMass().

Referenced by MassMatrix3< T >::operator=(), and MassMatrix3< T >::operator==().

## ◆ Mass() [2/2]

 T Mass ( ) const
inline

Get the mass.

Returns
The mass value

## ◆ MOI() [1/2]

 Matrix3 MOI ( ) const
inline

returns Moments of Inertia as a Matrix3

Returns
Moments of Inertia as a Matrix3
Deprecated:
See Matrix3<T> Moi() const

References MassMatrix3< T >::Moi().

## ◆ Moi()

 Matrix3 Moi ( ) const
inline

returns Moments of Inertia as a Matrix3

Returns
Moments of Inertia as a Matrix3

## ◆ MOI() [2/2]

 bool MOI ( const Matrix3< T > & _moi )
inline

Sets Moments of Inertia (MOI) from a Matrix3. Symmetric component of input matrix is used by averaging off-axis terms.

Parameters
 [in] _moi Moments of Inertia as a Matrix3
Returns
True if the MassMatrix3 is valid.
Deprecated:
See SetMoi(const Matrix3<T> &_moi)

References MassMatrix3< T >::SetMoi().

## ◆ OffDiagonalMoments() [1/2]

 Vector3 OffDiagonalMoments ( ) const
inline

Get the off-diagonal moments of inertia (Ixy, Ixz, Iyz).

Returns
The off-diagonal moments of inertia.

Referenced by MassMatrix3< T >::operator=(), and MassMatrix3< T >::operator==().

## ◆ OffDiagonalMoments() [2/2]

 bool OffDiagonalMoments ( const Vector3< T > & _ixyxzyz )
inline

Set the off-diagonal moments of inertia (Ixy, Ixz, Iyz).

Parameters
 [in] _ixyxzyz off-diagonal moments of inertia
Returns
True if the MassMatrix3 is valid.
Deprecated:
See bool SetOffDiagonalMoments(const Vector3<T> &_ixyxzyz)

References MassMatrix3< T >::SetOffDiagonalMoments().

## ◆ operator!=()

 bool operator!= ( const MassMatrix3< T > & _m ) const
inline

Inequality test operator.

Parameters
 [in] _m MassMatrix3 to test
Returns
True if not equal (using the default tolerance of 1e-6)

## ◆ operator=()

 MassMatrix3& operator= ( const MassMatrix3< T > & _massMatrix )
inline

Equal operator.

Parameters
 [in] _massMatrix MassMatrix3 to copy.
Returns
Reference to this object.

## ◆ operator==()

 bool operator== ( const MassMatrix3< T > & _m ) const
inline

Equality comparison operator.

Parameters
 [in] _m MassMatrix3 to copy.
Returns
true if each component is equal within a default tolerance, false otherwise

## ◆ PrincipalAxesOffset()

 Quaternion PrincipalAxesOffset ( const T _tol = 1e-6 ) const
inline

Compute rotational offset of principal axes.

Parameters
 [in] _tol Relative tolerance given by absolute value of _tol. Negative values of _tol are interpreted as a flag that causes principal moments to always be sorted from smallest to largest.
Returns
Quaternion representing rotational offset of principal axes. With a rotation matrix constructed from this quaternion R(q) and a diagonal matrix L with principal moments on the diagonal, the original moment of inertia matrix MOI can be reconstructed with MOI = R(q).Transpose() * L * R(q)
Todo:
Use a mock class to test this line

Referenced by MassMatrix3< T >::EquivalentBox().

## ◆ PrincipalMoments()

 Vector3 PrincipalMoments ( const T _tol = 1e-6 ) const
inline

Compute principal moments of inertia, which are the eigenvalues of the moment of inertia matrix.

Parameters
 [in] _tol Relative tolerance given by absolute value of _tol. Negative values of _tol are interpreted as a flag that causes principal moments to always be sorted from smallest to largest.
Returns
Principal moments of inertia. If the matrix is already diagonal and _tol is positive, they are returned in the existing order. Otherwise, the moments are sorted from smallest to largest.

References IGN_PI, std::pow(), ignition::math::sort3(), and Vector3< T >::Sum().

## ◆ SetDiagonalMoments()

 bool SetDiagonalMoments ( const Vector3< T > & _ixxyyzz )
inline

Set the diagonal moments of inertia (Ixx, Iyy, Izz).

Parameters
 [in] _ixxyyzz diagonal moments of inertia
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::DiagonalMoments().

## ◆ SetFromBox() [1/3]

 bool SetFromBox ( const Material & _mat, const Vector3< T > & _size, const Quaternion< T > & _rot = Quaternion::Identity )
inline

Set inertial properties based on a Material and equivalent box.

Parameters
 [in] _mat Material that specifies a density. Uniform density is used. [in] _size Size of equivalent box. [in] _rot Rotational offset of equivalent box.
Returns
True if inertial properties were set successfully.

References Material::Density(), Vector3< T >::X(), Vector3< T >::Y(), and Vector3< T >::Z().

Referenced by OrientedBox< T >::MassMatrix(), and MassMatrix3< T >::SetFromBox().

## ◆ SetFromBox() [2/3]

 bool SetFromBox ( const T _mass, const Vector3< T > & _size, const Quaternion< T > & _rot = Quaternion::Identity )
inline

Set inertial properties based on mass and equivalent box.

Parameters
 [in] _mass Mass to set. [in] _size Size of equivalent box. [in] _rot Rotational offset of equivalent box.
Returns
True if inertial properties were set successfully.

## ◆ SetFromBox() [3/3]

 bool SetFromBox ( const Vector3< T > & _size, const Quaternion< T > & _rot = Quaternion::Identity )
inline

Set inertial properties based on equivalent box using the current mass value.

Parameters
 [in] _size Size of equivalent box. [in] _rot Rotational offset of equivalent box.
Returns
True if inertial properties were set successfully.

## ◆ SetFromCylinderZ() [1/3]

 bool SetFromCylinderZ ( const Material & _mat, const T _length, const T _radius, const Quaternion< T > & _rot = Quaternion::Identity )
inline

Set inertial properties based on a Material and equivalent cylinder aligned with Z axis.

Parameters
 [in] _mat Material that specifies a density. Uniform density is used. [in] _length Length of cylinder along Z axis. [in] _radius Radius of cylinder. [in] _rot Rotational offset of equivalent cylinder.
Returns
True if inertial properties were set successfully.

References Material::Density(), and IGN_PI.

Referenced by MassMatrix3< T >::SetFromCylinderZ().

## ◆ SetFromCylinderZ() [2/3]

 bool SetFromCylinderZ ( const T _mass, const T _length, const T _radius, const Quaternion< T > & _rot = Quaternion::Identity )
inline

Set inertial properties based on mass and equivalent cylinder aligned with Z axis.

Parameters
 [in] _mass Mass to set. [in] _length Length of cylinder along Z axis. [in] _radius Radius of cylinder. [in] _rot Rotational offset of equivalent cylinder.
Returns
True if inertial properties were set successfully.

References MassMatrix3< T >::SetFromCylinderZ(), and MassMatrix3< T >::SetMass().

## ◆ SetFromCylinderZ() [3/3]

 bool SetFromCylinderZ ( const T _length, const T _radius, const Quaternion< T > & _rot )
inline

Set inertial properties based on equivalent cylinder aligned with Z axis using the current mass value.

Parameters
 [in] _length Length of cylinder along Z axis. [in] _radius Radius of cylinder. [in] _rot Rotational offset of equivalent cylinder.
Returns
True if inertial properties were set successfully.

## ◆ SetFromSphere() [1/3]

 bool SetFromSphere ( const Material & _mat, const T _radius )
inline

Set inertial properties based on a material and equivalent sphere.

Parameters
 [in] _mat Material that specifies a density. Uniform density is used. [in] _radius Radius of equivalent, uniform sphere.
Returns
True if inertial properties were set successfully.

References Material::Density(), IGN_PI, and std::pow().

Referenced by MassMatrix3< T >::SetFromSphere().

## ◆ SetFromSphere() [2/3]

 bool SetFromSphere ( const T _mass, const T _radius )
inline

Set inertial properties based on mass and equivalent sphere.

Parameters
 [in] _mass Mass to set. [in] _radius Radius of equivalent, uniform sphere.
Returns
True if inertial properties were set successfully.

References MassMatrix3< T >::SetFromSphere(), and MassMatrix3< T >::SetMass().

## ◆ SetFromSphere() [3/3]

 bool SetFromSphere ( const T _radius )
inline

Set inertial properties based on equivalent sphere using the current mass value.

Parameters
Returns
True if inertial properties were set successfully.

## ◆ SetInertiaMatrix()

 bool SetInertiaMatrix ( const T & _ixx, const T & _iyy, const T & _izz, const T & _ixy, const T & _ixz, const T & _iyz )
inline

Set the moment of inertia matrix.

Parameters
 [in] _ixx X second moment of inertia (MOI) about x axis. [in] _iyy Y second moment of inertia about y axis. [in] _izz Z second moment of inertia about z axis. [in] _ixy XY inertia. [in] _ixz XZ inertia. [in] _iyz YZ inertia.
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::InertiaMatrix().

## ◆ SetIxx()

 bool SetIxx ( const T & _v )
inline

Set IXX.

Parameters
 [in] _v IXX value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IXX().

## ◆ SetIxy()

 bool SetIxy ( const T & _v )
inline

Set IXY.

Parameters
 [in] _v IXY value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IXY().

## ◆ SetIxz()

 bool SetIxz ( const T & _v )
inline

Set IXZ.

Parameters
 [in] _v IXZ value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IXZ().

## ◆ SetIyy()

 bool SetIyy ( const T & _v )
inline

Set IYY.

Parameters
 [in] _v IYY value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IYY().

## ◆ SetIyz()

 bool SetIyz ( const T & _v )
inline

Set IYZ.

Parameters
 [in] _v IYZ value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IYZ().

## ◆ SetIzz()

 bool SetIzz ( const T & _v )
inline

Set IZZ.

Parameters
 [in] _v IZZ value
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::IZZ().

## ◆ SetMass()

 bool SetMass ( const T & _m )
inline

Set the mass.

Parameters
 [in] _m New mass value.
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

## ◆ SetMoi()

 bool SetMoi ( const Matrix3< T > & _moi )
inline

Sets Moments of Inertia (MOI) from a Matrix3. Symmetric component of input matrix is used by averaging off-axis terms.

Parameters
 [in] _moi Moments of Inertia as a Matrix3
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

## ◆ SetOffDiagonalMoments()

 bool SetOffDiagonalMoments ( const Vector3< T > & _ixyxzyz )
inline

Set the off-diagonal moments of inertia (Ixy, Ixz, Iyz).

Parameters
 [in] _ixyxzyz off-diagonal moments of inertia
Returns
True if the MassMatrix3 is valid.

References MassMatrix3< T >::IsValid().

Referenced by MassMatrix3< T >::OffDiagonalMoments().

## ◆ ValidMoments()

 static bool ValidMoments ( const Vector3< T > & _moments, const T _tolerance = IGN_MASSMATRIX3_DEFAULT_TOLERANCE )
inlinestatic

Verify that principal moments are positive and satisfy the triangle inequality.

Parameters
 [in] _moments Principal moments of inertia. [in] _tolerance The amount of error to accept when checking whether the moments are positive and satisfy the triangle inequality. Refer to Epsilon() for a description of _tolerance.
Returns
True if moments of inertia are positive and satisfy the triangle inequality. The following is how the return value is calculated.
T epsilon = this->Epsilon(_tolerance);
return _moments + epsilon >= 0 &&
_moments + epsilon >= 0 &&
_moments + epsilon >= 0 &&
_moments + _moments + epsilon >= _moments &&
_moments + _moments + epsilon >= _moments &&
_moments + _moments + epsilon >= _moments;

References MassMatrix3< T >::Epsilon().

Referenced by MassMatrix3< T >::EquivalentBox(), and MassMatrix3< T >::IsValid().

The documentation for this class was generated from the following file: