70#ifdef TEST_INTERNAL_OBJECTS
73 for (
int p = 0; p < 8; p++)
112 int NbTris = numVertices;
113 for (
int j = 0; j < NbTris; j++)
115 int k = (j + 1) % numVertices;
153#ifdef USE_CONNECTED_FACES
159 for (
int j = 0; j < numVertices; j++)
161 int k = (j + 1) % numVertices;
169 m_faces[i].m_connectedFaces[j] = connectedFace;
184 int NbTris = numVertices - 2;
187 for (
int j = 1; j <= NbTris; j++)
189 int k = (j + 1) % numVertices;
193 btVector3 Center = (p0 + p1 + p2) / 3.0f;
200#ifdef TEST_INTERNAL_OBJECTS
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);
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)
btScalar length(const btQuaternion &q)
Return the length of a quaternion.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btScalar btFabs(btScalar x)
int size() const
return the number of elements in the array
void resize(int newsize, const T &fillData=T())
void push_back(const T &_Val)
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.
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
const btScalar & x() const
Return the x value.
int maxAxis() const
Return the axis with the largest value Note return values are 0,1,2 for x, y, or z.
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