75#ifdef TEST_INTERNAL_OBJECTS
90 for(
int i=0;i<
m_faces.size();i++)
110 for(
int i=0;i<
m_faces.size();i++)
112 int numVertices =
m_faces[i].m_indices.size();
113 int NbTris = numVertices;
114 for(
int j=0;j<NbTris;j++)
116 int k = (j+1)%numVertices;
154#ifdef USE_CONNECTED_FACES
155 for(
int i=0;i<
m_faces.size();i++)
157 int numVertices =
m_faces[i].m_indices.size();
158 m_faces[i].m_connectedFaces.resize(numVertices);
160 for(
int j=0;j<numVertices;j++)
162 int k = (j+1)%numVertices;
170 m_faces[i].m_connectedFaces[j] = connectedFace;
175 for(
int i=0;i<
m_faces.size();i++)
177 int numVertices =
m_faces[i].m_indices.size();
178 int NbTris = numVertices-2;
181 for(
int j=1;j<=NbTris;j++)
183 int k = (j+1)%numVertices;
186 btScalar Area = ((p0 - p1).cross(p0 - p2)).length() * 0.5f;
197#ifdef TEST_INTERNAL_OBJECTS
201 for(
int i=0;i<
m_faces.size();i++)
219 if(pt.
x()<MinX) MinX = pt.
x();
220 if(pt.
x()>MaxX) MaxX = pt.
x();
221 if(pt.
y()<MinY) MinY = pt.
y();
222 if(pt.
y()>MaxY) MaxY = pt.
y();
223 if(pt.
z()<MinZ) MinZ = pt.
z();
224 if(pt.
z()>MaxZ) MaxZ = pt.
z();
226 mC.setValue(MaxX+MinX, MaxY+MinY, MaxZ+MinZ);
227 mE.setValue(MaxX-MinX, MaxY-MinY, MaxZ-MinZ);
233 const int LargestExtent =
mE.maxAxis();
234 const btScalar Step = (
mE[LargestExtent]*0.5f - r)/1024.0f;
237 bool FoundBox =
false;
238 for(
int j=0;j<1024;j++)
256 const int e0 = (1<<LargestExtent) & 3;
257 const int e1 = (1<<e0) & 3;
259 for(
int j=0;j<1024;j++)
283 for(
int i=0;i<numVerts;i++)
301 btSwap(witnesPtMin,witnesPtMax);
bool IsAlmostZero(const btVector3 &v)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btScalar btFabs(btScalar x)
void project(const btTransform &trans, const btVector3 &dir, btScalar &minProj, btScalar &maxProj, btVector3 &witnesPtMin, btVector3 &witnesPtMax) const
bool testContainment() const
btAlignedObjectArray< btVector3 > m_vertices
virtual ~btConvexPolyhedron()
btAlignedObjectArray< btFace > m_faces
btConvexPolyhedron()
This file was written by Erwin Coumans Separating axis rest based on work from Pierre Terdiman,...
btAlignedObjectArray< btVector3 > m_uniqueEdges
The btHashMap template class implements a generic and lightweight hashmap.
void insert(const Key &key, const Value &value)
const Value * find(const Key &key) const
btVector3 can be used to represent 3D points and vectors.
const btScalar & z() const
Return the z value.
btScalar dot(const btVector3 &v) const
Return the dot product.
const btScalar & x() const
Return the x value.
btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
const btScalar & y() const
Return the y value.
btInternalVertexPair(short int v0, short int v1)
bool equals(const btInternalVertexPair &other) const