15 #if defined (_WIN32) || defined (__i386__)
16 #define BT_USE_SSE_IN_API
65 if (shiftVerticesByMargin)
71 for (
int p=0;p<planeEquations.
size();p++)
94 faceNormals.
resize(numFaces);
103 for (
int p=0;p<numVertices;p++)
109 for (
int i=0;i<numFaces;i++)
111 int face = convexUtil->
faces[i];
132 edges[numEdges++] = newEdge;
135 }
while (edge!=firstEdge);
142 faceNormals[i] = edges[0].
cross(edges[1]);
143 faceNormals[i].normalize();
144 tmpFaces[i].m_plane[0] = faceNormals[i].getX();
145 tmpFaces[i].m_plane[1] = faceNormals[i].getY();
146 tmpFaces[i].m_plane[2] = faceNormals[i].getZ();
147 tmpFaces[i].m_plane[3] = planeEq;
153 faceNormals[i].setZero();
156 for (
int v=0;v<tmpFaces[i].m_indices.
size();v++)
164 tmpFaces[i].m_plane[3] = -planeEq;
171 for (
int i=0;i<tmpFaces.
size();i++)
174 while (todoFaces.
size())
177 int refFace = todoFaces[todoFaces.
size()-1];
180 btFace& faceA = tmpFaces[refFace];
184 for (
int j=todoFaces.
size()-1;j>=0;j--)
186 int i = todoFaces[j];
187 btFace& faceB = tmpFaces[i];
189 if (faceNormalA.
dot(faceNormalB)>faceWeldThreshold)
197 bool did_merge =
false;
198 if (coplanarFaceGroup.
size()>1)
205 for (
int i=0;i<coplanarFaceGroup.
size();i++)
209 btFace& face = tmpFaces[coplanarFaceGroup[i]];
211 averageFaceNormal+=faceNormal;
219 for (
int i=0;i<orgpoints.
size();i++)
222 if (orgpoints[i].m_orgIndex == orgIndex)
236 for (
int i=0;i<4;i++)
237 combinedFace.
m_plane[i] = tmpFaces[coplanarFaceGroup[0]].m_plane[i];
244 for (
int i=0;i<hull.size();i++)
247 for(
int k = 0; k < orgpoints.
size(); k++)
249 if(orgpoints[k].m_orgIndex == hull[i].m_orgIndex)
251 orgpoints[k].m_orgIndex = -1;
258 bool reject_merge =
false;
262 for(
int i = 0; i < orgpoints.
size(); i++) {
263 if(orgpoints[i].m_orgIndex == -1)
266 for(
int j = 0; j < tmpFaces.
size(); j++) {
268 btFace& face = tmpFaces[j];
270 bool is_in_current_group =
false;
271 for(
int k = 0; k < coplanarFaceGroup.
size(); k++) {
272 if(coplanarFaceGroup[k] == j) {
273 is_in_current_group =
true;
277 if(is_in_current_group)
281 if(face.
m_indices[v] == orgpoints[i].m_orgIndex) {
303 for (
int i=0;i<coplanarFaceGroup.
size();i++)
305 btFace face = tmpFaces[coplanarFaceGroup[i]];
321 #define MIN(_a, _b) ((_a) < (_b) ? (_a) : (_b))
351 for( i = 0; i < inner_count; i++ )
353 i = (int) vec.
maxDot( temp, inner_count, newDot);
375 for (i=0;i<numVectors;i++)
380 for (
int j=0;j<numVectors;j++)
388 for( i = 0; i < inner_count; i++ )
390 i = (int) vec.
maxDot( temp, inner_count, newDot);
391 if (newDot > supportVerticesOut[j][3])
393 supportVerticesOut[j] = temp[i];
394 supportVerticesOut[j][3] = newDot;
414 getAabb(ident,aabbMin,aabbMax);
425 inertia = scaledmass * (
btVector3(y2+z2,x2+z2,x2+y2));
439 m_localAabbMin(1,1,1),
440 m_localAabbMax(-1,-1,-1),
441 m_isLocalAabbValid(false)
477 for (
int i = 0; i < 3; ++i )
485 for (
int i=0;i<3;i++)