PxMassProperties Class Reference
[Extensions]

Utility class to compute and manipulate mass and inertia tensor properties. More...

#include <PxMassProperties.h>

Collaboration diagram for PxMassProperties:

Collaboration graph
PxVec3PxMat33
[legend]

List of all members.

Public Member Functions

PX_FORCE_INLINE PxMassProperties ()
 Default constructor.
PX_FORCE_INLINE PxMassProperties (const PxReal m, const PxMat33 &inertiaT, const PxVec3 &com)
 Construct from individual elements.
 PxMassProperties (const PxGeometry &geometry)
 Compute mass properties based on a provided geometry structure.
PX_FORCE_INLINE PxMassProperties operator* (const PxReal scale) const
 Scale mass properties.
PX_FORCE_INLINE void translate (const PxVec3 &t)
 Translate the center of mass by a given vector and adjust the inertia tensor accordingly.

Static Public Member Functions

static PX_FORCE_INLINE PxVec3 getMassSpaceInertia (const PxMat33 &inertia, PxQuat &massFrame)
 Get the entries of the diagonalized inertia tensor and the corresponding reference rotation.
static PX_FORCE_INLINE PxMat33 translateInertia (const PxMat33 &inertia, const PxReal mass, const PxVec3 &t)
 Translate an inertia tensor using the parallel axis theorem.
static PX_FORCE_INLINE PxMat33 rotateInertia (const PxMat33 &inertia, const PxQuat &q)
 Rotate an inertia tensor around the center of mass.
static PxMat33 scaleInertia (const PxMat33 &inertia, const PxQuat &scaleRotation, const PxVec3 &scale)
 Non-uniform scaling of the inertia tensor.
static PxMassProperties sum (const PxMassProperties *props, const PxTransform *transforms, const PxU32 count)
 Sum up individual mass properties.

Public Attributes

PxMat33 inertiaTensor
 The inertia tensor of the object.
PxVec3 centerOfMass
 The center of mass of the object.
PxReal mass
 The mass of the object.


Detailed Description

Utility class to compute and manipulate mass and inertia tensor properties.

In most cases PxRigidBodyExt::updateMassAndInertia(), PxRigidBodyExt::setMassAndUpdateInertia() should be enough to setup the mass properties of a rigid body. This utility class targets users that need to customize the mass properties computation.


Constructor & Destructor Documentation

PX_FORCE_INLINE PxMassProperties::PxMassProperties (  )  [inline]

Default constructor.

PX_FORCE_INLINE PxMassProperties::PxMassProperties ( const PxReal  m,
const PxMat33 inertiaT,
const PxVec3 com 
) [inline]

Construct from individual elements.

PxMassProperties::PxMassProperties ( const PxGeometry geometry  )  [inline]


Member Function Documentation

static PX_FORCE_INLINE PxVec3 PxMassProperties::getMassSpaceInertia ( const PxMat33 inertia,
PxQuat massFrame 
) [inline, static]

Get the entries of the diagonalized inertia tensor and the corresponding reference rotation.

Parameters:
[in] inertia The inertia tensor to diagonalize.
[out] massFrame The frame the diagonalized tensor refers to.
Returns:
The entries of the diagonalized inertia tensor.

References PxMat33::column0, PxMat33::column1, PxMat33::column2, PxQuat::isFinite(), PxVec3::isFinite(), PX_ASSERT, and PxDiagonalize().

PX_FORCE_INLINE PxMassProperties PxMassProperties::operator* ( const PxReal  scale  )  const [inline]

Scale mass properties.

Parameters:
[in] scale The linear scaling factor to apply to the mass properties.
Returns:
The scaled mass properties.

References PX_ASSERT, and PxIsFinite().

static PX_FORCE_INLINE PxMat33 PxMassProperties::rotateInertia ( const PxMat33 inertia,
const PxQuat q 
) [inline, static]

Rotate an inertia tensor around the center of mass.

Parameters:
[in] inertia The inertia tensor to rotate.
[in] q The rotation to apply to the inertia tensor.
Returns:
The rotated inertia tensor.

References PxMat33::column0, PxMat33::column1, PxMat33::column2, PxMat33::getTranspose(), PxVec3::isFinite(), PxQuat::isUnit(), and PX_ASSERT.

static PxMat33 PxMassProperties::scaleInertia ( const PxMat33 inertia,
const PxQuat scaleRotation,
const PxVec3 scale 
) [inline, static]

Non-uniform scaling of the inertia tensor.

Parameters:
[in] inertia The inertia tensor to scale.
[in] scaleRotation The frame of the provided scaling factors.
[in] scale The scaling factor for each axis (relative to the frame specified in scaleRotation).
Returns:
The scaled inertia tensor.

References PxMat33::column0, PxMat33::column1, PxMat33::column2, PxVec3::dot(), PxQuat::getConjugate(), PxVec3::isFinite(), PxQuat::isUnit(), PxVec3::multiply(), PX_ASSERT, PxVec3::x, PxVec3::y, and PxVec3::z.

static PxMassProperties PxMassProperties::sum ( const PxMassProperties props,
const PxTransform transforms,
const PxU32  count 
) [inline, static]

Sum up individual mass properties.

Parameters:
[in] props Array of mass properties to sum up.
[in] transforms Reference transforms for each mass properties entry.
[in] count The number of mass properties to sum up.
Returns:
The summed up mass properties.

References PxMat33::column0, PxMat33::column1, PxMat33::column2, inertiaTensor, PxVec3::isFinite(), mass, PX_ASSERT, PxIsFinite(), PxZero, and PxTransform::transform().

PX_FORCE_INLINE void PxMassProperties::translate ( const PxVec3 t  )  [inline]

Translate the center of mass by a given vector and adjust the inertia tensor accordingly.

Parameters:
[in] t The translation vector for the center of mass.

References PxVec3::isFinite(), and PX_ASSERT.

static PX_FORCE_INLINE PxMat33 PxMassProperties::translateInertia ( const PxMat33 inertia,
const PxReal  mass,
const PxVec3 t 
) [inline, static]

Translate an inertia tensor using the parallel axis theorem.

Parameters:
[in] inertia The inertia tensor to translate.
[in] mass The mass of the object.
[in] t The relative frame to translate the inertia tensor to.
Returns:
The translated inertia tensor.

References PxMat33::column0, PxMat33::column1, PxMat33::column2, PxVec3::isFinite(), PX_ASSERT, PxIsFinite(), PxVec3::x, PxVec3::y, and PxVec3::z.


Member Data Documentation

The center of mass of the object.

The inertia tensor of the object.

Referenced by sum().

The mass of the object.

Referenced by sum().


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


Copyright © 2008-2018 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com