Differential D8762 Diff 28333 extern/bullet2/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp
Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp
| Show All 10 Lines | |||||
| 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. | 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. | ||||
| 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. | 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. | ||||
| 3. This notice may not be removed or altered from any source distribution. | 3. This notice may not be removed or altered from any source distribution. | ||||
| */ | */ | ||||
| #include "btTetrahedronShape.h" | #include "btTetrahedronShape.h" | ||||
| #include "LinearMath/btMatrix3x3.h" | #include "LinearMath/btMatrix3x3.h" | ||||
| btBU_Simplex1to4::btBU_Simplex1to4() : btPolyhedralConvexAabbCachingShape (), | btBU_Simplex1to4::btBU_Simplex1to4() : btPolyhedralConvexAabbCachingShape(), | ||||
| m_numVertices(0) | m_numVertices(0) | ||||
| { | { | ||||
| m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | ||||
| } | } | ||||
| btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0) : btPolyhedralConvexAabbCachingShape (), | btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0) : btPolyhedralConvexAabbCachingShape(), | ||||
| m_numVertices(0) | m_numVertices(0) | ||||
| { | { | ||||
| m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | ||||
| addVertex(pt0); | addVertex(pt0); | ||||
| } | } | ||||
| btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1) : btPolyhedralConvexAabbCachingShape (), | btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1) : btPolyhedralConvexAabbCachingShape(), | ||||
| m_numVertices(0) | m_numVertices(0) | ||||
| { | { | ||||
| m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | ||||
| addVertex(pt0); | addVertex(pt0); | ||||
| addVertex(pt1); | addVertex(pt1); | ||||
| } | } | ||||
| btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2) : btPolyhedralConvexAabbCachingShape (), | btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1, const btVector3& pt2) : btPolyhedralConvexAabbCachingShape(), | ||||
| m_numVertices(0) | m_numVertices(0) | ||||
| { | { | ||||
| m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | ||||
| addVertex(pt0); | addVertex(pt0); | ||||
| addVertex(pt1); | addVertex(pt1); | ||||
| addVertex(pt2); | addVertex(pt2); | ||||
| } | } | ||||
| btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2,const btVector3& pt3) : btPolyhedralConvexAabbCachingShape (), | btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1, const btVector3& pt2, const btVector3& pt3) : btPolyhedralConvexAabbCachingShape(), | ||||
| m_numVertices(0) | m_numVertices(0) | ||||
| { | { | ||||
| m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; | ||||
| addVertex(pt0); | addVertex(pt0); | ||||
| addVertex(pt1); | addVertex(pt1); | ||||
| addVertex(pt2); | addVertex(pt2); | ||||
| addVertex(pt3); | addVertex(pt3); | ||||
| } | } | ||||
| void btBU_Simplex1to4::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const | void btBU_Simplex1to4::getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const | ||||
| { | { | ||||
| #if 1 | #if 1 | ||||
| btPolyhedralConvexAabbCachingShape::getAabb(t,aabbMin,aabbMax); | btPolyhedralConvexAabbCachingShape::getAabb(t, aabbMin, aabbMax); | ||||
| #else | #else | ||||
| aabbMin.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); | aabbMin.setValue(BT_LARGE_FLOAT, BT_LARGE_FLOAT, BT_LARGE_FLOAT); | ||||
| aabbMax.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); | aabbMax.setValue(-BT_LARGE_FLOAT, -BT_LARGE_FLOAT, -BT_LARGE_FLOAT); | ||||
| //just transform the vertices in worldspace, and take their AABB | //just transform the vertices in worldspace, and take their AABB | ||||
| for (int i=0;i<m_numVertices;i++) | for (int i = 0; i < m_numVertices; i++) | ||||
| { | { | ||||
| btVector3 worldVertex = t(m_vertices[i]); | btVector3 worldVertex = t(m_vertices[i]); | ||||
| aabbMin.setMin(worldVertex); | aabbMin.setMin(worldVertex); | ||||
| aabbMax.setMax(worldVertex); | aabbMax.setMax(worldVertex); | ||||
| } | } | ||||
| #endif | #endif | ||||
| } | } | ||||
| void btBU_Simplex1to4::addVertex(const btVector3& pt) | void btBU_Simplex1to4::addVertex(const btVector3& pt) | ||||
| { | { | ||||
| m_vertices[m_numVertices++] = pt; | m_vertices[m_numVertices++] = pt; | ||||
| recalcLocalAabb(); | recalcLocalAabb(); | ||||
| } | } | ||||
| int btBU_Simplex1to4::getNumVertices() const | int btBU_Simplex1to4::getNumVertices() const | ||||
| { | { | ||||
| return m_numVertices; | return m_numVertices; | ||||
| } | } | ||||
| int btBU_Simplex1to4::getNumEdges() const | int btBU_Simplex1to4::getNumEdges() const | ||||
| { | { | ||||
| //euler formula, F-E+V = 2, so E = F+V-2 | //euler formula, F-E+V = 2, so E = F+V-2 | ||||
| switch (m_numVertices) | switch (m_numVertices) | ||||
| { | { | ||||
| case 0: | case 0: | ||||
| return 0; | return 0; | ||||
| case 1: return 0; | case 1: | ||||
| case 2: return 1; | return 0; | ||||
| case 3: return 3; | case 2: | ||||
| case 4: return 6; | return 1; | ||||
| case 3: | |||||
| return 3; | |||||
| case 4: | |||||
| return 6; | |||||
| } | } | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| void btBU_Simplex1to4::getEdge(int i,btVector3& pa,btVector3& pb) const | void btBU_Simplex1to4::getEdge(int i, btVector3& pa, btVector3& pb) const | ||||
| { | { | ||||
| switch (m_numVertices) | switch (m_numVertices) | ||||
| { | { | ||||
| case 2: | case 2: | ||||
| pa = m_vertices[0]; | pa = m_vertices[0]; | ||||
| pb = m_vertices[1]; | pb = m_vertices[1]; | ||||
| break; | break; | ||||
| case 3: | case 3: | ||||
| switch (i) | switch (i) | ||||
| { | { | ||||
| case 0: | case 0: | ||||
| pa = m_vertices[0]; | pa = m_vertices[0]; | ||||
| pb = m_vertices[1]; | pb = m_vertices[1]; | ||||
| break; | break; | ||||
| case 1: | case 1: | ||||
| pa = m_vertices[1]; | pa = m_vertices[1]; | ||||
| pb = m_vertices[2]; | pb = m_vertices[2]; | ||||
| break; | break; | ||||
| case 2: | case 2: | ||||
| pa = m_vertices[2]; | pa = m_vertices[2]; | ||||
| pb = m_vertices[0]; | pb = m_vertices[0]; | ||||
| break; | break; | ||||
| } | } | ||||
| break; | break; | ||||
| case 4: | case 4: | ||||
| switch (i) | switch (i) | ||||
| { | { | ||||
| case 0: | case 0: | ||||
| pa = m_vertices[0]; | pa = m_vertices[0]; | ||||
| pb = m_vertices[1]; | pb = m_vertices[1]; | ||||
| break; | break; | ||||
| case 1: | case 1: | ||||
| pa = m_vertices[1]; | pa = m_vertices[1]; | ||||
| pb = m_vertices[2]; | pb = m_vertices[2]; | ||||
| break; | break; | ||||
| case 2: | case 2: | ||||
| pa = m_vertices[2]; | pa = m_vertices[2]; | ||||
| pb = m_vertices[0]; | pb = m_vertices[0]; | ||||
| break; | break; | ||||
| case 3: | case 3: | ||||
| pa = m_vertices[0]; | pa = m_vertices[0]; | ||||
| pb = m_vertices[3]; | pb = m_vertices[3]; | ||||
| break; | break; | ||||
| case 4: | case 4: | ||||
| pa = m_vertices[1]; | pa = m_vertices[1]; | ||||
| pb = m_vertices[3]; | pb = m_vertices[3]; | ||||
| break; | break; | ||||
| case 5: | case 5: | ||||
| pa = m_vertices[2]; | pa = m_vertices[2]; | ||||
| pb = m_vertices[3]; | pb = m_vertices[3]; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void btBU_Simplex1to4::getVertex(int i,btVector3& vtx) const | void btBU_Simplex1to4::getVertex(int i, btVector3& vtx) const | ||||
| { | { | ||||
| vtx = m_vertices[i]; | vtx = m_vertices[i]; | ||||
| } | } | ||||
| int btBU_Simplex1to4::getNumPlanes() const | int btBU_Simplex1to4::getNumPlanes() const | ||||
| { | { | ||||
| switch (m_numVertices) | switch (m_numVertices) | ||||
| { | { | ||||
| case 0: | case 0: | ||||
| return 0; | return 0; | ||||
| case 1: | case 1: | ||||
| return 0; | return 0; | ||||
| case 2: | case 2: | ||||
| return 0; | return 0; | ||||
| case 3: | case 3: | ||||
| return 2; | return 2; | ||||
| case 4: | case 4: | ||||
| return 4; | return 4; | ||||
| default: | default: | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| void btBU_Simplex1to4::getPlane(btVector3&, btVector3& ,int ) const | void btBU_Simplex1to4::getPlane(btVector3&, btVector3&, int) const | ||||
| { | { | ||||
| } | } | ||||
| int btBU_Simplex1to4::getIndex(int ) const | int btBU_Simplex1to4::getIndex(int) const | ||||
| { | { | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| bool btBU_Simplex1to4::isInside(const btVector3& ,btScalar ) const | bool btBU_Simplex1to4::isInside(const btVector3&, btScalar) const | ||||
| { | { | ||||
| return false; | return false; | ||||
| } | } | ||||