git-svn-id: https://reactphysics3d.googlecode.com/svn/trunk@214 92aac97c-a6ce-11dd-a772-7fcde58d38e6

This commit is contained in:
chappuis.daniel 2009-11-20 13:55:10 +00:00
parent bacb454577
commit 1cd2b4a783
2 changed files with 36 additions and 10 deletions

View File

@ -31,7 +31,7 @@
// Recalculate the secondary values from the primary values
recalculate();
}
}
// Copy-constructor
BodyState::BodyState(const BodyState& bodyState)
@ -48,6 +48,7 @@ BodyState::~BodyState() {
// Recalculate the secondary values of the BodyState when the primary values have changed
void BodyState::recalculate() {
// Compute the linear velocity
linearVelocity = linearMomentum * massInverse.getValue();
@ -62,6 +63,8 @@ void BodyState::recalculate() {
}
// Compute the body state at time t + dt
// This method is used with integration methods that need to compute the state at a future
// time (like Runge-Kutta 4 integrator)
void BodyState::computeAtTime(const Time& timeStep, const DerivativeBodyState& lastDerivativeBodyState) {
double dt = timeStep.getValue(); // Timestep
@ -83,13 +86,17 @@ void BodyState::computeAtTime(const Time& timeStep, const DerivativeBodyState& l
}
// Return the force on the body at time t
// This method is used with integration methods that need to compute the state at a future
// time (like Runge-Kutta 4 integrator)
Vector3D BodyState::computeForce(Time time) const {
// TODO : Implement this method
return force * (1.0 / massInverse.getValue());
// TODO : Implement this method (we want that the user of the library could define this method)
return force;
}
// Return the torque on the body at time
// This method is used with integration methods that need to compute the state at a future
// time (like Runge-Kutta 4 integrator)
Vector3D BodyState::computeTorque(Time time) const {
// TODO : Implement this method
return Vector3D(0.0, 0.0 ,0.0);
// TODO : Implement this method (we want that the user of the library could define this method)
return torque;
}

View File

@ -40,7 +40,8 @@ class BodyState {
Vector3D linearMomentum; // Linear momentum of the body
Quaternion orientation; // Orientation quaternion of the body
Vector3D angularMomentum; // Angular momentum of the body
Vector3D force; // force on the body
Vector3D force; // Current force on the body
Vector3D torque; // Current torque on the body
// Secondary values
Vector3D linearVelocity; // Linear velocity of the body
@ -65,12 +66,15 @@ class BodyState {
Vector3D getAngularMomentum() const; // Return the angular momentum
void setAngularMomentum(const Vector3D& angularMomentum); // Set the angular momentum
Vector3D getLinearVelocity() const; // Return the linear velocity
void setLinearVelocity(const Vector3D& linearVelocity); // TODO : Delete this
Vector3D getAngularVelocity() const; // Return the angular velocity
Quaternion getSpin() const; // Return the spin of the body
void setMassInverse(Kilogram massInverse); // Set the inverse of the mass
void setInertiaTensorInverse(const Matrix3x3& inertiaTensorInverse); // Set the inverse of the inertia tensor
Vector3D getForce() const; // Return the force over the body
void setForce(const Vector3D force); // Set the force over the body
Vector3D getForce() const; // Return the current force of the body
void setForce(const Vector3D& force); // Set the current force on the body
Vector3D getTorque() const; // Return the current torque of the body
void setTorque(const Vector3D& torque); // Set the current torque of the body
Kilogram getMassInverse() const; // TODO : Delete this
void recalculate(); // Recalculate the secondary values
// of the BodyState from the primary ones
@ -127,6 +131,10 @@ inline Vector3D BodyState::getLinearVelocity() const {
return linearVelocity;
}
inline void BodyState::setLinearVelocity(const Vector3D& linearVelocity) {
this->linearVelocity = linearVelocity;
}
// Return the angular velocity of the body
inline Vector3D BodyState::getAngularVelocity() const {
return angularVelocity;
@ -153,10 +161,21 @@ inline Vector3D BodyState::getForce() const {
}
// Set the force over the body
inline void BodyState::setForce(const Vector3D force) {
this->force = force;
inline void BodyState::setForce(const Vector3D& force) {
this->force;
}
// Return the current torque of the body
inline Vector3D BodyState::getTorque() const {
return torque;
}
// Set the current torque of the body
inline void BodyState::setTorque(const Vector3D& torque) {
this->torque = torque;
}
// TODO : Delete this
inline Kilogram BodyState::getMassInverse() const {
return massInverse;