Newswire
Features
Connection
Job Search
Directories

by Jeff Lander
Gamasutra
May 10, 2000

This article originally appeared in the
August 1999 issue of:

Printer Friendly Version

Features

The Trials and Tribulations of Tribology

Listing 2. Code for handling static friction forces.

// Calculating Magnitude of Fn
FdotN = DotProduct(&curParticle->contactN,&curParticle->f);

// Calculating Vt Velocity Tangent to Contact Normal
VdotN = DotProduct(&curParticle->contactN,&curParticle->v);
ScaleVector(&curParticle->contactN, VdotN, &Vn);
VectorDifference(&curParticle->v, &Vn, &Vt);
Vmag = VectorSquaredLength(&Vt);
NormalizeVector(&Vt); // Get the Direction of Vt
if (Vmag > STATIC_THRESHOLD) // Handle Static Friction
{
    ScaleVector(&Vt, (FdotN * m_Ckf), &Vt);
// Multiply By Normal force magnitude and Coef of     Kinetic Friction
    VectorSum(&curParticle->f,&Vt,&curParticle->f);
}
else // Handle it as Kinetic Friction
{
    Vmag = Vmag / STATIC_THRESHOLD;
// Multiply By Normal force magnitude and Coef of Static // Friction
// And Static approximation ratio
    ScaleVector(&Vt, (FdotN * m_Csf * Vmag), &Vt);
    VectorSum(&curParticle->f,&Vt,&curParticle->f);
}

________________________________________________________

Back to Article

Home   JoinHelpContact UsShop
 


Home | Join | Help | Contact Us | Shop | Newswire | Site Map
Write for Us | Features | Connection | Job Search | Directories


Copyright © 1999-2000 Miller Freeman Inc. All rights reserved.
Privacy Policy

Miller Freeman Game Group: GDC, GDMag, IGF Independent Games Festival Game Developer Magazine Game Developers Conference