Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "btBoxShape.h"
00016
00017 btBoxShape::btBoxShape( const btVector3& boxHalfExtents)
00018 : btPolyhedralConvexShape()
00019 {
00020 m_shapeType = BOX_SHAPE_PROXYTYPE;
00021
00022 setSafeMargin(boxHalfExtents);
00023
00024 btVector3 margin(getMargin(),getMargin(),getMargin());
00025 m_implicitShapeDimensions = (boxHalfExtents * m_localScaling) - margin;
00026 };
00027
00028
00029
00030
00031 void btBoxShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const
00032 {
00033 btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax);
00034 }
00035
00036
00037 void btBoxShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const
00038 {
00039
00040 btVector3 halfExtents = getHalfExtentsWithMargin();
00041
00042 btScalar lx=btScalar(2.)*(halfExtents.x());
00043 btScalar ly=btScalar(2.)*(halfExtents.y());
00044 btScalar lz=btScalar(2.)*(halfExtents.z());
00045
00046 inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz),
00047 mass/(btScalar(12.0)) * (lx*lx + lz*lz),
00048 mass/(btScalar(12.0)) * (lx*lx + ly*ly));
00049
00050 }
00051