[ODE] Approximate Hydrodynamic Forces
Ander Taylor
ander_taylor at hotmail.com
Fri Apr 18 07:05:02 2003
Hi David,
I think I have cracked it!!! : )
void ApplyHydrodynamicForces(dReal viscosity)
{
const dReal *lvel = dBodyGetLinearVel(body);
const dReal *R = dBodyGetRotation(body);
dReal ss[3];
dGeomBoxGetLengths(geom, ss);
dReal AreaX = ss[1]*ss[2];
dReal AreaY = ss[0]*ss[2];
dReal AreaZ = ss[0]*ss[1];
//In the end it was so simple. The rotation matrix is ordered
differently.
dReal DotProdX = (R[0]*lvel[0] + R[4]*lvel[1] + R[8]*lvel[2]);
dReal DotProdY = (R[1]*lvel[0] + R[5]*lvel[1] + R[9]*lvel[2]);
dReal DotProdZ = (R[2]*lvel[0] + R[6]*lvel[1] + R[10]*lvel[2]);
dReal nx = DotProdX*AreaX;
dReal ny = DotProdY*AreaY;
dReal nz = DotProdZ*AreaZ;
//In the end it was so simple. The rotation matrix is ordered
differently.
dReal temp = -nx*viscosity;
dBodyAddForce(body, temp*R[0], temp*R[4], temp*R[8]);
temp = -ny*viscosity;
dBodyAddForce(body, temp*R[1], temp*R[5], temp*R[9]);
temp =-nz*viscosity;
dBodyAddForce(body, temp*R[2], temp*R[6], temp*R[10]);
}
I have been banging my head off the screen trying to work this out!!
I am a happy man now : )
Of course I would not have even got close if you had not helped me out in
the first instance, thanks David.
Cheers,
Ander
_________________________________________________________________
Hotmail now available on Australian mobile phones. Go to
http://ninemsn.com.au/mobilecentral/hotmail_mobile.asp