23 #define MAX_COINCIDENT 8 47 return (m_key < other.
m_key);
52 return (m_key > other.
m_key);
74 if(contacts.
size()==0)
return;
77 if(contacts.
size()==1)
79 push_back(contacts[0]);
89 for ( i = 0;i<contacts.
size() ;i++ )
98 int coincident_count=0;
101 unsigned int last_key = keycontacts[0].m_key;
102 unsigned int key = 0;
104 push_back(contacts[keycontacts[0].
m_value]);
108 for( i=1;i<keycontacts.
size();i++)
110 key = keycontacts[i].m_key;
111 const GIM_CONTACT * scontact = &contacts[keycontacts[i].m_value];
118 *pcontact = *scontact;
119 coincident_count = 0;
121 else if(normal_contact_average)
127 coincident_normals[coincident_count] = scontact->
m_normal;
136 if(normal_contact_average && coincident_count>0)
139 coincident_count = 0;
142 push_back(*scontact);
143 pcontact = &(*this)[this->
size()-1];
153 if(contacts.
size()==0)
return;
155 if(contacts.
size()==1)
157 push_back(contacts[0]);
163 for (
int i=1;i<contacts.
size() ;i++ )
165 average_contact.
m_point += contacts[i].m_point;
166 average_contact.
m_normal += contacts[i].m_normal * contacts[i].m_depth;
172 average_contact.
m_point *= divide_average;
174 average_contact.
m_normal *= divide_average;
void push_back(const T &_Val)
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
btVector3 can be used to represent 3D points and vectors.
int size() const
return the number of elements in the array
static void clear(T &value)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
void quickSort(const L &CompareFunc)
btScalar length() const
Return the length of the vector.
btScalar btFabs(btScalar x)