git-svn-id: https://reactphysics3d.googlecode.com/svn/trunk@214 92aac97c-a6ce-11dd-a772-7fcde58d38e6
This commit is contained in:
parent
bacb454577
commit
1cd2b4a783
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
// Recalculate the secondary values from the primary values
|
// Recalculate the secondary values from the primary values
|
||||||
recalculate();
|
recalculate();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy-constructor
|
// Copy-constructor
|
||||||
BodyState::BodyState(const BodyState& bodyState)
|
BodyState::BodyState(const BodyState& bodyState)
|
||||||
|
@ -48,6 +48,7 @@ BodyState::~BodyState() {
|
||||||
|
|
||||||
// Recalculate the secondary values of the BodyState when the primary values have changed
|
// Recalculate the secondary values of the BodyState when the primary values have changed
|
||||||
void BodyState::recalculate() {
|
void BodyState::recalculate() {
|
||||||
|
|
||||||
// Compute the linear velocity
|
// Compute the linear velocity
|
||||||
linearVelocity = linearMomentum * massInverse.getValue();
|
linearVelocity = linearMomentum * massInverse.getValue();
|
||||||
|
|
||||||
|
@ -62,6 +63,8 @@ void BodyState::recalculate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute the body state at time t + dt
|
// 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) {
|
void BodyState::computeAtTime(const Time& timeStep, const DerivativeBodyState& lastDerivativeBodyState) {
|
||||||
|
|
||||||
double dt = timeStep.getValue(); // Timestep
|
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
|
// 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 {
|
Vector3D BodyState::computeForce(Time time) const {
|
||||||
// TODO : Implement this method
|
// TODO : Implement this method (we want that the user of the library could define this method)
|
||||||
return force * (1.0 / massInverse.getValue());
|
return force;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the torque on the body at time
|
// 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 {
|
Vector3D BodyState::computeTorque(Time time) const {
|
||||||
// TODO : Implement this method
|
// TODO : Implement this method (we want that the user of the library could define this method)
|
||||||
return Vector3D(0.0, 0.0 ,0.0);
|
return torque;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ class BodyState {
|
||||||
Vector3D linearMomentum; // Linear momentum of the body
|
Vector3D linearMomentum; // Linear momentum of the body
|
||||||
Quaternion orientation; // Orientation quaternion of the body
|
Quaternion orientation; // Orientation quaternion of the body
|
||||||
Vector3D angularMomentum; // Angular momentum 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
|
// Secondary values
|
||||||
Vector3D linearVelocity; // Linear velocity of the body
|
Vector3D linearVelocity; // Linear velocity of the body
|
||||||
|
@ -65,12 +66,15 @@ class BodyState {
|
||||||
Vector3D getAngularMomentum() const; // Return the angular momentum
|
Vector3D getAngularMomentum() const; // Return the angular momentum
|
||||||
void setAngularMomentum(const Vector3D& angularMomentum); // Set the angular momentum
|
void setAngularMomentum(const Vector3D& angularMomentum); // Set the angular momentum
|
||||||
Vector3D getLinearVelocity() const; // Return the linear velocity
|
Vector3D getLinearVelocity() const; // Return the linear velocity
|
||||||
|
void setLinearVelocity(const Vector3D& linearVelocity); // TODO : Delete this
|
||||||
Vector3D getAngularVelocity() const; // Return the angular velocity
|
Vector3D getAngularVelocity() const; // Return the angular velocity
|
||||||
Quaternion getSpin() const; // Return the spin of the body
|
Quaternion getSpin() const; // Return the spin of the body
|
||||||
void setMassInverse(Kilogram massInverse); // Set the inverse of the mass
|
void setMassInverse(Kilogram massInverse); // Set the inverse of the mass
|
||||||
void setInertiaTensorInverse(const Matrix3x3& inertiaTensorInverse); // Set the inverse of the inertia tensor
|
void setInertiaTensorInverse(const Matrix3x3& inertiaTensorInverse); // Set the inverse of the inertia tensor
|
||||||
Vector3D getForce() const; // Return the force over the body
|
Vector3D getForce() const; // Return the current force of the body
|
||||||
void setForce(const Vector3D force); // Set the force over 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
|
Kilogram getMassInverse() const; // TODO : Delete this
|
||||||
void recalculate(); // Recalculate the secondary values
|
void recalculate(); // Recalculate the secondary values
|
||||||
// of the BodyState from the primary ones
|
// of the BodyState from the primary ones
|
||||||
|
@ -127,6 +131,10 @@ inline Vector3D BodyState::getLinearVelocity() const {
|
||||||
return linearVelocity;
|
return linearVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void BodyState::setLinearVelocity(const Vector3D& linearVelocity) {
|
||||||
|
this->linearVelocity = linearVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
// Return the angular velocity of the body
|
// Return the angular velocity of the body
|
||||||
inline Vector3D BodyState::getAngularVelocity() const {
|
inline Vector3D BodyState::getAngularVelocity() const {
|
||||||
return angularVelocity;
|
return angularVelocity;
|
||||||
|
@ -153,10 +161,21 @@ inline Vector3D BodyState::getForce() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the force over the body
|
// Set the force over the body
|
||||||
inline void BodyState::setForce(const Vector3D force) {
|
inline void BodyState::setForce(const Vector3D& force) {
|
||||||
this->force = 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
|
// TODO : Delete this
|
||||||
inline Kilogram BodyState::getMassInverse() const {
|
inline Kilogram BodyState::getMassInverse() const {
|
||||||
return massInverse;
|
return massInverse;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user