float dt = 0.001; //how do i determine the value of this ?
float timeElapsed = 0,
currentTime = 0,
accumul = 0;
void DoTimeStep()
{
float newTime = time();
float deltaTime = newTime - currentTime;
currentTime = newTime;
accumul += deltaTime;
while (accumul >= dt)
{
UpdateObjects(dt);
timeElapsed += dt;
accumul -= dt;
}
RenderObjects();
}
//Euler
void CObject::Update(float dt)
{
AddForce(CVector(0,-10,0)*m_mass); //add gravitation
m_accel = m_force / m_mass;
m_veloc += m_accel * dt;
m_position += m_veloc*dt;
m_force = CVector(0,0,0); //reset forces
}
//Verlet
void CObject::Update2(float dt)
{
float dt2 = dt*dt;
AddForce(CVector(0,-10,0)*m_mass); //add gravitation
m_accel = m_force / m_mass;
CVector temp = m_position;
CVector m_position += (m_position - m_prevPos) + m_accel * 2 * dt2;
m_prevPos = temp;
m_force = CVector(0,0,0); //reset forces
}