add corotated model to lagrangian forces

This commit is contained in:
Xuchen Han
2019-08-08 10:14:18 -07:00
parent 94aeb4657b
commit deb7c152c4
8 changed files with 174 additions and 4 deletions

View File

@@ -854,6 +854,7 @@ void btSoftBody::scale(const btVector3& scl)
updateNormals();
updateBounds();
updateConstants();
initializeDmInverse();
}
//
@@ -2811,6 +2812,24 @@ void btSoftBody::setSpringStiffness(btScalar k)
}
}
void btSoftBody::initializeDmInverse()
{
btScalar unit_simplex_measure = 1./6.;
for (int i = 0; i < m_tetras.size(); ++i)
{
Tetra &t = m_tetras[i];
btVector3 c1 = t.m_n[1]->m_q - t.m_n[0]->m_q;
btVector3 c2 = t.m_n[2]->m_q - t.m_n[0]->m_q;
btVector3 c3 = t.m_n[3]->m_q - t.m_n[0]->m_q;
btMatrix3x3 Dm(c1.getX(), c2.getX(), c3.getX(),
c1.getY(), c2.getY(), c3.getY(),
c1.getZ(), c2.getZ(), c3.getZ());
t.m_element_measure = Dm.determinant() * unit_simplex_measure;
t.m_Dm_inverse = Dm.inverse();
}
}
//
void btSoftBody::Joint::Prepare(btScalar dt, int)
{