70#ifdef TEST_INTERNAL_OBJECTS
73 for (
int p = 0; p < 8; p++)
93 for (
int i = 0; i <
m_faces.size(); i++)
109 for (
int i = 0; i <
m_faces.size(); i++)
111 int numVertices =
m_faces[i].m_indices.size();
112 int NbTris = numVertices;
113 for (
int j = 0; j < NbTris; j++)
115 int k = (j + 1) % numVertices;
153#ifdef USE_CONNECTED_FACES
154 for (
int i = 0; i <
m_faces.size(); i++)
156 int numVertices =
m_faces[i].m_indices.size();
157 m_faces[i].m_connectedFaces.resize(numVertices);
159 for (
int j = 0; j < numVertices; j++)
161 int k = (j + 1) % numVertices;
169 m_faces[i].m_connectedFaces[j] = connectedFace;
181 for (
int i = 0; i <
m_faces.size(); i++)
183 int numVertices =
m_faces[i].m_indices.size();
184 int NbTris = numVertices - 2;
187 for (
int j = 1; j <= NbTris; j++)
189 int k = (j + 1) % numVertices;
192 btScalar Area = ((p0 - p1).cross(p0 - p2)).length() * 0.5f;
193 btVector3 Center = (p0 + p1 + p2) / 3.0f;
200#ifdef TEST_INTERNAL_OBJECTS
204 for (
int i = 0; i <
m_faces.size(); i++)
221 if (pt.
x() < MinX) MinX = pt.
x();
222 if (pt.
x() > MaxX) MaxX = pt.
x();
223 if (pt.
y() < MinY) MinY = pt.
y();
224 if (pt.
y() > MaxY) MaxY = pt.
y();
225 if (pt.
z() < MinZ) MinZ = pt.
z();
226 if (pt.
z() > MaxZ) MaxZ = pt.
z();
228 mC.setValue(MaxX + MinX, MaxY + MinY, MaxZ + MinZ);
229 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;
236 m_extents[LargestExtent] =
mE[LargestExtent] * 0.5f;
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++)
282 for (
int i = 0; i < numVerts; i++)
297 if (minProj > maxProj)
300 btSwap(witnesPtMin, witnesPtMax);
bool IsAlmostZero1(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