Open CASCADE Technology  7.1.0.beta
Public Member Functions | Protected Attributes
GProp_GProps Class Reference

Implements a general mechanism to compute the global properties of a "compound geometric system" in 3d space by composition of the global properties of "elementary geometric entities" such as (curve, surface, solid, set of points). It is possible to compose the properties of several "compound geometric systems" too. More...

#include <GProp_GProps.hxx>

Inheritance diagram for GProp_GProps:
Inheritance graph
[legend]

Public Member Functions

 GProp_GProps ()
 The origin (0, 0, 0) of the absolute cartesian coordinate system is used to compute the global properties. More...
 
 GProp_GProps (const gp_Pnt &SystemLocation)
 The point SystemLocation is used to compute the gobal properties of the system. For more accuracy it is better to define this point closed to the location of the system. For example it could be a point around the centre of mass of the system. This point is referred to as the reference point for this framework. For greater accuracy it is better for the reference point to be close to the location of the system. It can, for example, be a point near the center of mass of the system. At initialization, the framework is empty; i.e. it retains no dimensional information such as mass, or inertia. However, it is now able to bring together global properties of various other systems, whose global properties have already been computed using another framework. To do this, use the function Add to define the components of the system. Use it once per component of the system, and then use the interrogation functions available to access the computed values. More...
 
void Add (const GProp_GProps &Item, const Standard_Real Density=1.0)
 Either. More...
 
Standard_Real Mass () const
 Returns the mass of the current system. If no density is attached to the components of the current system the returned value corresponds to : More...
 
gp_Pnt CentreOfMass () const
 Returns the center of mass of the current system. If the gravitational field is uniform, it is the center of gravity. The coordinates returned for the center of mass are expressed in the absolute Cartesian coordinate system. More...
 
gp_Mat MatrixOfInertia () const
 returns the matrix of inertia. It is a symmetrical matrix. The coefficients of the matrix are the quadratic moments of inertia. More...
 
void StaticMoments (Standard_Real &Ix, Standard_Real &Iy, Standard_Real &Iz) const
 Returns Ix, Iy, Iz, the static moments of inertia of the current system; i.e. the moments of inertia about the three axes of the Cartesian coordinate system. More...
 
Standard_Real MomentOfInertia (const gp_Ax1 &A) const
 computes the moment of inertia of the material system about the axis A. More...
 
GProp_PrincipalProps PrincipalProperties () const
 Computes the principal properties of inertia of the current system. There is always a set of axes for which the products of inertia of a geometric system are equal to 0; i.e. the matrix of inertia of the system is diagonal. These axes are the principal axes of inertia. Their origin is coincident with the center of mass of the system. The associated moments are called the principal moments of inertia. This function computes the eigen values and the eigen vectors of the matrix of inertia of the system. Results are stored by using a presentation framework of principal properties of inertia (GProp_PrincipalProps object) which may be queried to access the value sought. More...
 
Standard_Real RadiusOfGyration (const gp_Ax1 &A) const
 Returns the radius of gyration of the current system about the axis A. More...
 

Protected Attributes

gp_Pnt g
 
gp_Pnt loc
 
Standard_Real dim
 
gp_Mat inertia
 

Detailed Description

Implements a general mechanism to compute the global properties of a "compound geometric system" in 3d space by composition of the global properties of "elementary geometric entities" such as (curve, surface, solid, set of points). It is possible to compose the properties of several "compound geometric systems" too.

To computes the global properties of a compound geometric system you should : . declare the GProps using a constructor which initializes the GProps and defines the location point used to compute the inertia . compose the global properties of your geometric components with the properties of your system using the method Add.

To compute the global properties of the geometric components of the system you should use the services of the following classes :

The global properties computed are :

Example of utilisation in a simplified C++ implementation :

//declares the GProps, the point (0.0, 0.0, 0.0) of the //absolute cartesian coordinate system is used as //default reference point to compute the centre of mass GProp_GProps System ();

//computes the inertia of a 3d curve Your_CGProps Component1 (curve, ....);

//computes the inertia of surfaces Your_SGprops Component2 (surface1, ....); Your_SGprops Component3 (surface2,....);

//composes the global properties of components 1, 2, 3 //a density can be associated with the components, the //density can be defaulted to 1. Real Density1 = 2.0; Real Density2 = 3.0; System.Add (Component1, Density1); System.Add (Component2, Density2); System.Add (Component3);

//returns the centre of mass of the system in the //absolute cartesian coordinate system gp_Pnt G = System.CentreOfMass ();

//computes the principales inertia of the system GProp_PrincipalProps Pp = System.PrincipalProperties();

//returns the principal moments and radius of gyration Real Ixx, Iyy, Izz, Rxx, Ryy, Rzz; Pp.Moments (Ixx, Iyy, Izz); Pp.RadiusOfGyration (Ixx, Iyy, Izz);

Constructor & Destructor Documentation

GProp_GProps::GProp_GProps ( )

The origin (0, 0, 0) of the absolute cartesian coordinate system is used to compute the global properties.

GProp_GProps::GProp_GProps ( const gp_Pnt SystemLocation)

The point SystemLocation is used to compute the gobal properties of the system. For more accuracy it is better to define this point closed to the location of the system. For example it could be a point around the centre of mass of the system. This point is referred to as the reference point for this framework. For greater accuracy it is better for the reference point to be close to the location of the system. It can, for example, be a point near the center of mass of the system. At initialization, the framework is empty; i.e. it retains no dimensional information such as mass, or inertia. However, it is now able to bring together global properties of various other systems, whose global properties have already been computed using another framework. To do this, use the function Add to define the components of the system. Use it once per component of the system, and then use the interrogation functions available to access the computed values.

Member Function Documentation

void GProp_GProps::Add ( const GProp_GProps Item,
const Standard_Real  Density = 1.0 
)

Either.

  • initializes the global properties retained by this framework from those retained by the framework Item, or
  • brings together the global properties still retained by this framework with those retained by the framework Item. The value Density, which is 1.0 by default, is used as the density of the system analysed by Item. Sometimes the density will have already been given at the time of construction of the framework Item. This may be the case for example, if Item is a GProp_PGProps framework built to compute the global properties of a set of points ; or another GProp_GProps object which already retains composite global properties. In these cases the real density was perhaps already taken into account at the time of construction of Item. Note that this is not checked: if the density of parts of the system is taken into account two or more times, results of the computation will be false. Notes :
  • The point relative to which the inertia of Item is computed (i.e. the reference point of Item) may be different from the reference point in this framework. Huygens' theorem is applied automatically to transfer inertia values to the reference point in this framework.
  • The function Add is used once per component of the system. After that, you use the interrogation functions available to access values computed for the system.
  • The system whose global properties are already brought together by this framework is referred to as the current system. However, the current system is not retained by this framework, which maintains only its global properties. Exceptions Standard_DomainError if Density is less than or equal to gp::Resolution().
gp_Pnt GProp_GProps::CentreOfMass ( ) const

Returns the center of mass of the current system. If the gravitational field is uniform, it is the center of gravity. The coordinates returned for the center of mass are expressed in the absolute Cartesian coordinate system.

Standard_Real GProp_GProps::Mass ( ) const

Returns the mass of the current system. If no density is attached to the components of the current system the returned value corresponds to :

  • the total length of the edges of the current system if this framework retains only linear properties, as is the case for example, when using only the LinearProperties function to combine properties of lines from shapes, or
  • the total area of the faces of the current system if this framework retains only surface properties, as is the case for example, when using only the SurfaceProperties function to combine properties of surfaces from shapes, or
  • the total volume of the solids of the current system if this framework retains only volume properties, as is the case for example, when using only the VolumeProperties function to combine properties of volumes from solids. Warning A length, an area, or a volume is computed in the current data unit system. The mass of a single object is obtained by multiplying its length, its area or its volume by the given density. You must be consistent with respect to the units used.
gp_Mat GProp_GProps::MatrixOfInertia ( ) const

returns the matrix of inertia. It is a symmetrical matrix. The coefficients of the matrix are the quadratic moments of inertia.

| Ixx Ixy Ixz | matrix = | Ixy Iyy Iyz | | Ixz Iyz Izz |

The moments of inertia are denoted by Ixx, Iyy, Izz. The products of inertia are denoted by Ixy, Ixz, Iyz. The matrix of inertia is returned in the central coordinate system (G, Gx, Gy, Gz) where G is the centre of mass of the system and Gx, Gy, Gz the directions parallel to the X(1,0,0) Y(0,1,0) Z(0,0,1) directions of the absolute cartesian coordinate system. It is possible to compute the matrix of inertia at another location point using the Huyghens theorem (you can use the method of package GProp : HOperator).

Standard_Real GProp_GProps::MomentOfInertia ( const gp_Ax1 A) const

computes the moment of inertia of the material system about the axis A.

GProp_PrincipalProps GProp_GProps::PrincipalProperties ( ) const

Computes the principal properties of inertia of the current system. There is always a set of axes for which the products of inertia of a geometric system are equal to 0; i.e. the matrix of inertia of the system is diagonal. These axes are the principal axes of inertia. Their origin is coincident with the center of mass of the system. The associated moments are called the principal moments of inertia. This function computes the eigen values and the eigen vectors of the matrix of inertia of the system. Results are stored by using a presentation framework of principal properties of inertia (GProp_PrincipalProps object) which may be queried to access the value sought.

Standard_Real GProp_GProps::RadiusOfGyration ( const gp_Ax1 A) const

Returns the radius of gyration of the current system about the axis A.

void GProp_GProps::StaticMoments ( Standard_Real Ix,
Standard_Real Iy,
Standard_Real Iz 
) const

Returns Ix, Iy, Iz, the static moments of inertia of the current system; i.e. the moments of inertia about the three axes of the Cartesian coordinate system.

Field Documentation

Standard_Real GProp_GProps::dim
protected
gp_Pnt GProp_GProps::g
protected
gp_Mat GProp_GProps::inertia
protected
gp_Pnt GProp_GProps::loc
protected

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