void btUniformScalingShape::getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const { #if 1 btVector3 _directions[] = { btVector3( 1., 0., 0.), btVector3( 0., 1., 0.), btVector3( 0., 0., 1.), btVector3( -1., 0., 0.), btVector3( 0., -1., 0.), btVector3( 0., 0., -1.) }; btVector3 _supporting[] = { btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.) }; for (int i=0;i<6;i++) { _directions[i] = _directions[i]*t.getBasis(); } batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); btVector3 aabbMin1(0,0,0), aabbMax1(0,0,0); for ( int i = 0; i < 3; ++i ) { aabbMax1[i] = t(_supporting[i])[i]; aabbMin1[i] = t(_supporting[i + 3])[i]; } btVector3 marginVec(getMargin(), getMargin(), getMargin()); aabbMin = aabbMin1-marginVec; aabbMax = aabbMax1+marginVec; #else btScalar margin = getMargin(); for (int i=0;i<3;i++) { btVector3 vec(btScalar(0.), btScalar(0.), btScalar(0.)); vec[i] = btScalar(1.); btVector3 sv = localGetSupportingVertex(vec*t.getBasis()); btVector3 tmp = t(sv); aabbMax[i] = tmp[i]+margin; vec[i] = btScalar(-1.); sv = localGetSupportingVertex(vec*t.getBasis()); tmp = t(sv); aabbMin[i] = tmp[i]-margin; } #endif }
void btPolyhedralConvexAabbCachingShape::recalcLocalAabb() { m_isLocalAabbValid = true; #if 1 static const btVector3 _directions[] = { btVector3( 1., 0., 0.), btVector3( 0., 1., 0.), btVector3( 0., 0., 1.), btVector3( -1., 0., 0.), btVector3( 0., -1., 0.), btVector3( 0., 0., -1.) }; btVector3 _supporting[] = { btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.), btVector3( 0., 0., 0.) }; batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); for ( int i = 0; i < 3; ++i ) { m_localAabbMax[i] = _supporting[i][i] + m_collisionMargin; m_localAabbMin[i] = _supporting[i + 3][i] - m_collisionMargin; } #else for (int i=0;i<3;i++) { btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); vec[i] = btScalar(1.); btVector3 tmp = localGetSupportingVertex(vec); m_localAabbMax[i] = tmp[i]; vec[i] = btScalar(-1.); tmp = localGetSupportingVertex(vec); m_localAabbMin[i] = tmp[i]; } #endif }