62 if (shiftVerticesByMargin)
68 for (
int p=0;p<planeEquations.
size();p++)
91 faceNormals.
resize(numFaces);
100 for (
int p=0;p<numVertices;p++)
106 for (
int i=0;i<numFaces;i++)
108 int face = convexUtil->
faces[i];
129 edges[numEdges++] = newEdge;
132 }
while (edge!=firstEdge);
139 faceNormals[i] = edges[0].
cross(edges[1]);
140 faceNormals[i].normalize();
141 tmpFaces[i].m_plane[0] = faceNormals[i].getX();
142 tmpFaces[i].m_plane[1] = faceNormals[i].getY();
143 tmpFaces[i].m_plane[2] = faceNormals[i].getZ();
144 tmpFaces[i].m_plane[3] = planeEq;
150 faceNormals[i].setZero();
153 for (
int v=0;v<tmpFaces[i].m_indices.
size();v++)
161 tmpFaces[i].m_plane[3] = -planeEq;
168 for (
int i=0;i<tmpFaces.
size();i++)
171 while (todoFaces.
size())
174 int refFace = todoFaces[todoFaces.
size()-1];
177 btFace& faceA = tmpFaces[refFace];
181 for (
int j=todoFaces.
size()-1;j>=0;j--)
183 int i = todoFaces[j];
184 btFace& faceB = tmpFaces[i];
186 if (faceNormalA.
dot(faceNormalB)>faceWeldThreshold)
194 bool did_merge =
false;
195 if (coplanarFaceGroup.
size()>1)
202 for (
int i=0;i<coplanarFaceGroup.
size();i++)
206 btFace& face = tmpFaces[coplanarFaceGroup[i]];
208 averageFaceNormal+=faceNormal;
216 for (
int i=0;i<orgpoints.
size();i++)
219 if (orgpoints[i].m_orgIndex == orgIndex)
233 for (
int i=0;i<4;i++)
234 combinedFace.
m_plane[i] = tmpFaces[coplanarFaceGroup[0]].m_plane[i];
241 for (
int i=0;i<hull.size();i++)
244 for(
int k = 0; k < orgpoints.
size(); k++)
246 if(orgpoints[k].m_orgIndex == hull[i].m_orgIndex)
248 orgpoints[k].m_orgIndex = -1;
255 bool reject_merge =
false;
259 for(
int i = 0; i < orgpoints.
size(); i++) {
260 if(orgpoints[i].m_orgIndex == -1)
263 for(
int j = 0; j < tmpFaces.
size(); j++) {
265 btFace& face = tmpFaces[j];
267 bool is_in_current_group =
false;
268 for(
int k = 0; k < coplanarFaceGroup.
size(); k++) {
269 if(coplanarFaceGroup[k] == j) {
270 is_in_current_group =
true;
274 if(is_in_current_group)
278 if(face.
m_indices[v] == orgpoints[i].m_orgIndex) {
300 for (
int i=0;i<coplanarFaceGroup.
size();i++)
302 btFace face = tmpFaces[coplanarFaceGroup[i]];
318 #define MIN(_a, _b) ((_a) < (_b) ? (_a) : (_b))
348 for( i = 0; i < inner_count; i++ )
350 i = (int) vec.
maxDot( temp, inner_count, newDot);
372 for (i=0;i<numVectors;i++)
377 for (
int j=0;j<numVectors;j++)
385 for( i = 0; i < inner_count; i++ )
387 i = (int) vec.
maxDot( temp, inner_count, newDot);
388 if (newDot > supportVerticesOut[j][3])
390 supportVerticesOut[j] = temp[i];
391 supportVerticesOut[j][3] = newDot;
411 getAabb(ident,aabbMin,aabbMax);
422 inertia = scaledmass * (
btVector3(y2+z2,x2+z2,x2+y2));
436 m_localAabbMin(1,1,1),
437 m_localAabbMax(-1,-1,-1),
438 m_isLocalAabbValid(false)
474 for (
int i = 0; i < 3; ++i )
482 for (
int i=0;i<3;i++)