Force_Gravity.h
Go to the documentation of this file.00001 #ifndef SimTK_SIMBODY_FORCE_GRAVITY_H_
00002 #define SimTK_SIMBODY_FORCE_GRAVITY_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include "SimTKcommon.h"
00035 #include "simbody/internal/Force.h"
00036
00042 namespace SimTK {
00043
00069 class SimTK_SIMBODY_EXPORT Force::Gravity : public Force {
00070 public:
00071
00072
00073
00086
00107 Gravity(GeneralForceSubsystem& forces,
00108 const SimbodyMatterSubsystem& matter,
00109 const Vec3& gravity);
00110
00142 Gravity(GeneralForceSubsystem& forces,
00143 const SimbodyMatterSubsystem& matter,
00144 const UnitVec3& down,
00145 Real g,
00146 Real zeroHeight = 0);
00147
00160 Gravity& setDefaultGravityVector(const Vec3& gravity);
00161
00170 Gravity& setDefaultDownDirection(const UnitVec3& down);
00171
00182 Gravity& setDefaultMagnitude(Real g);
00183
00192 Gravity& setDefaultZeroHeight(Real zeroHeight);
00193
00196 Vec3 getDefaultGravityVector() const;
00199 const UnitVec3& getDefaultDownDirection() const;
00201 Real getDefaultMagnitude() const;
00204 Real getDefaultZeroHeight() const;
00205
00210
00226
00240 const Gravity& setGravityVector(State& state, const Vec3& gravity) const;
00241
00253 const Gravity& setDownDirection(State& state,
00254 const UnitVec3& down) const;
00264 const Gravity& setMagnitude(State& state, Real g) const;
00275 const Gravity& setZeroHeight(State& state, Real hz) const;
00276
00285 Vec3 getGravityVector(const State& state) const;
00293 const UnitVec3& getDownDirection(const State& state) const;
00301 Real getMagnitude(const State& state) const;
00310 Real getZeroHeight(const State& state) const;
00311
00316
00325
00336 Real getPotentialEnergy(const State& state) const;
00345 const SpatialVec&
00346 getBodyForce(const State& state, MobilizedBodyIndex mobod) const;
00347
00348
00356 const Vec3&
00357 getParticleForce(const State& state, ParticleIndex particle) const;
00360
00362
00364 SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS(Gravity, GravityImpl, Force);
00366 };
00367
00368 }
00369
00370 #endif // SimTK_SIMBODY_FORCE_GRAVITY_H_