made the multiDof-singleDof disctinction a bit cleaner

This commit is contained in:
kubas
2014-01-09 00:58:31 +01:00
parent e5372f3712
commit 4eac9a11f3
2 changed files with 51 additions and 73 deletions

View File

@@ -49,14 +49,9 @@ public:
btScalar mass, // mass of base
const btVector3 &inertia, // inertia of base, in base frame; assumed diagonal
bool fixedBase, // whether the base is fixed (true) or can move (false)
bool canSleep);
btMultiBody(int n_links, // NOT including the base
int n_dofs, // NOT including 6 floating base dofs
btScalar mass, // mass of base
const btVector3 &inertia, // inertia of base, in base frame; assumed diagonal
bool fixedBase, // whether the base is fixed (true) or can move (false)
bool canSleep);
bool canSleep,
bool multiDof = false
);
~btMultiBody();
@@ -356,20 +351,20 @@ public:
// printf("%.4f ", delta_vee[dof]*multiplier);
//printf("\n");
btScalar sum = 0;
for (int dof = 0; dof < 6 + getNumDofs(); ++dof)
{
sum += delta_vee[dof]*multiplier*delta_vee[dof]*multiplier;
}
btScalar l = btSqrt(sum);
//btScalar sum = 0;
//for (int dof = 0; dof < 6 + getNumDofs(); ++dof)
//{
// sum += delta_vee[dof]*multiplier*delta_vee[dof]*multiplier;
//}
//btScalar l = btSqrt(sum);
if (l>m_maxAppliedImpulse)
{
multiplier *= m_maxAppliedImpulse/l;
}
//if (l>m_maxAppliedImpulse)
//{
// multiplier *= m_maxAppliedImpulse/l;
//}
for (int dof = 0; dof < 6 + getNumDofs(); ++dof)
{
for (int dof = 0; dof < 6 + getNumDofs(); ++dof)
{
m_realBuf[dof] += delta_vee[dof] * multiplier;
}
}
@@ -480,7 +475,7 @@ public:
}
bool isMultiDof() { return m_isMultiDof; }
void forceMultiDof();
void finalizeMultiDof();
bool __posUpdated;
@@ -503,8 +498,6 @@ private:
m_links[bidx].m_dofOffset = dofOffset; m_links[bidx].m_cfgOffset = cfgOffset;
dofOffset += m_links[bidx].m_dofCount; cfgOffset += m_links[bidx].m_posVarCount;
}
m_posVarCnt = cfgOffset;
}
void mulMatrix(btScalar *pA, btScalar *pB, int rowsA, int colsA, int rowsB, int colsB, btScalar *pC) const;
@@ -529,7 +522,7 @@ private:
//
// realBuf:
// offset size array
// 0 6 + num_links v (base_omega; base_vel; joint_vels)
// 0 6 + num_links v (base_omega; base_vel; joint_vels) MULTIDOF [sysdof x sysdof for D matrices (TOO MUCH!) + pos_delta which is sys-cfg sized]
// 6+num_links num_links D
//
// vectorBuf: