Skip to content

Contact type is confusing #84

@FantasyVR

Description

@FantasyVR

The contact type in

static const unsigned int ParticleContactType = 1;

is not useful at all and should be deleted, although it's not really used in the code.

I assume that

is consist with it.

Thus, I think it should be corrected as follows:

static const unsigned int RigidBodyContactType = 0;
static const unsigned int ParticleRigidBodyContactType = 1;		
static const unsigned int ParticleSolidContactType = 2;

To be clear when reading the source code, I think it's better to use static value when creating contacts_mt and contact constraints in void DistanceFieldCollisionDetection::collisionDetection(SimulationModel &model) such as

for (unsigned int i = 0; i < contacts_mt.size(); i++)

	for (unsigned int i = 0; i < contacts_mt.size(); i++)
	{
		for (unsigned int j = 0; j < contacts_mt[i].size(); j++)
		{
			if (contacts_mt[i][j].m_type == CollisionDetection::ParticleRigidBodyContactType)
				addParticleRigidBodyContact(contacts_mt[i][j].m_index1, contacts_mt[i][j].m_index2,
					contacts_mt[i][j].m_cp1, contacts_mt[i][j].m_cp2, contacts_mt[i][j].m_normal,
					contacts_mt[i][j].m_dist, contacts_mt[i][j].m_restitution, contacts_mt[i][j].m_friction);
			else if (contacts_mt[i][j].m_type == CollisionDetection::RigidBodyContactType)
				addRigidBodyContact(contacts_mt[i][j].m_index1, contacts_mt[i][j].m_index2,
					contacts_mt[i][j].m_cp1, contacts_mt[i][j].m_cp2, contacts_mt[i][j].m_normal,
					contacts_mt[i][j].m_dist, contacts_mt[i][j].m_restitution, contacts_mt[i][j].m_friction);
			else if (contacts_mt[i][j].m_type == CollisionDetection::ParticleSolidContactType)
			{
				addParticleSolidContact(contacts_mt[i][j].m_index1, contacts_mt[i][j].m_index2,
					contacts_mt[i][j].m_elementIndex2, contacts_mt[i][j].m_bary2,
					contacts_mt[i][j].m_cp1, contacts_mt[i][j].m_cp2, contacts_mt[i][j].m_normal,					
					contacts_mt[i][j].m_dist, contacts_mt[i][j].m_restitution, contacts_mt[i][j].m_friction);
				m_tempContacts.push_back(contacts_mt[i][j]);
			}
		}
	}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions