剛体に運動量を加えるとき、加える位置によって
運動量と角運動量が発生するがその式を教えて欲しい
以下が今使っているソースだが、どうも
間違っているんじゃないかと思って

void physical_body_t::add_momentum( const cvector3_t& point, const cvector3_t& momentum)
{
const cvector3_t radius = point - m_position;
const float_t distanceSq = dot( radius, radius);
if( distanceSq >= get_physics_config().constant.epsilon)
{
const cvector3_t vertical = dot( momentum, radius) / distanceSq * radius;
const cvector3_t amomentum = cross( radius, momentum) / distanceSq;

m_momentum += vertical;
m_amomentum += amomentum;
}
else
{
m_momentum += momentum;
}
}