Возможно, стоит ещё сюда зайти:
Код
static void contactGetInfo1 (dxJointContact *j, dxJoint::Info1 *info)
{
// make sure mu's >= 0, then calculate number of constraint rows and number
// of unbounded rows.
int m = 1, nub=0;
if (j->contact.surface.mu < 0) j->contact.surface.mu = 0;
if (j->contact.surface.mode & dContactMu2) {
if (j->contact.surface.mu > 0) m++;
if (j->contact.surface.mu2 < 0) j->contact.surface.mu2 = 0;
if (j->contact.surface.mu2 > 0) m++;
if (j->contact.surface.mu == dInfinity) nub ++;
if (j->contact.surface.mu2 == dInfinity) nub ++;
}
else {
if (j->contact.surface.mu > 0) m += 2;
if (j->contact.surface.mu == dInfinity) nub += 2;
}
j->the_m = m;
info->m = m;
info->nub = nub;
}
{
// make sure mu's >= 0, then calculate number of constraint rows and number
// of unbounded rows.
int m = 1, nub=0;
if (j->contact.surface.mu < 0) j->contact.surface.mu = 0;
if (j->contact.surface.mode & dContactMu2) {
if (j->contact.surface.mu > 0) m++;
if (j->contact.surface.mu2 < 0) j->contact.surface.mu2 = 0;
if (j->contact.surface.mu2 > 0) m++;
if (j->contact.surface.mu == dInfinity) nub ++;
if (j->contact.surface.mu2 == dInfinity) nub ++;
}
else {
if (j->contact.surface.mu > 0) m += 2;
if (j->contact.surface.mu == dInfinity) nub += 2;
}
j->the_m = m;
info->m = m;
info->nub = nub;
}
Т.к. surface.mu уже не dInfinity