Если вы хотите рассчитать расстояние до симуляции, вы должны взглянуть на источники box2d. При моделировании скорость тела изменяется в зависимости от силы тяжести, дополнительных приложенных сил, линейного демпфирования, углового демпфирования и, возможно, чего-то большего. Также скорость зависит от скорости итераций.
Но я думаю, что если вы хотите действительно плавного движения (например, от удара), вам лучше использовать функцию applyForce вместо импульса. Но будьте уверены, что вы применяете силу на каждом этапе симуляции.
EDIT:
Также вы можете имитировать сопротивление воздуха как:
Fa = -k * V * V. Я симулировал движение в трубе таким образом. Работал отлично.
Таким образом, каждый шаг вы можете сделать что-то вроде этого:
BlowForce = k1 / distance; // k1 - coefficient
Resistance = -k2 * V * V; //k2 - another coefficient
TotalForce = BlowForce + Resistance;
body->ApplyForce(TotalForce);