| [1963] | 1 | /* | 
|---|
 | 2 | Bullet Continuous Collision Detection and Physics Library | 
|---|
 | 3 | Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/ | 
|---|
 | 4 |  | 
|---|
 | 5 | This software is provided 'as-is', without any express or implied warranty. | 
|---|
 | 6 | In no event will the authors be held liable for any damages arising from the use of this software. | 
|---|
 | 7 | Permission is granted to anyone to use this software for any purpose,  | 
|---|
 | 8 | including commercial applications, and to alter it and redistribute it freely,  | 
|---|
 | 9 | subject to the following restrictions: | 
|---|
 | 10 |  | 
|---|
 | 11 | 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. | 
|---|
 | 12 | 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. | 
|---|
 | 13 | 3. This notice may not be removed or altered from any source distribution. | 
|---|
 | 14 | */ | 
|---|
 | 15 |  | 
|---|
 | 16 | #ifndef BT_SOLVER_CONSTRAINT_H | 
|---|
 | 17 | #define BT_SOLVER_CONSTRAINT_H | 
|---|
 | 18 |  | 
|---|
 | 19 | class   btRigidBody; | 
|---|
 | 20 | #include "LinearMath/btVector3.h" | 
|---|
 | 21 | #include "LinearMath/btMatrix3x3.h" | 
|---|
| [2882] | 22 | #include "btJacobianEntry.h" | 
|---|
| [1963] | 23 |  | 
|---|
 | 24 | //#define NO_FRICTION_TANGENTIALS 1 | 
|---|
| [2882] | 25 | #include "btSolverBody.h" | 
|---|
| [1963] | 26 |  | 
|---|
| [2882] | 27 |  | 
|---|
| [1963] | 28 | ///1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and friction constraints. | 
|---|
| [8351] | 29 | ATTRIBUTE_ALIGNED64 (struct)    btSolverConstraint | 
|---|
| [1963] | 30 | { | 
|---|
 | 31 |         BT_DECLARE_ALIGNED_ALLOCATOR(); | 
|---|
 | 32 |  | 
|---|
| [2882] | 33 |         btVector3               m_relpos1CrossNormal; | 
|---|
 | 34 |         btVector3               m_contactNormal; | 
|---|
| [1963] | 35 |  | 
|---|
| [2882] | 36 |         btVector3               m_relpos2CrossNormal; | 
|---|
 | 37 |         //btVector3             m_contactNormal2;//usually m_contactNormal2 == -m_contactNormal | 
|---|
| [1963] | 38 |  | 
|---|
| [2882] | 39 |         btVector3               m_angularComponentA; | 
|---|
 | 40 |         btVector3               m_angularComponentB; | 
|---|
| [1963] | 41 |          | 
|---|
| [2882] | 42 |         mutable btSimdScalar    m_appliedPushImpulse; | 
|---|
 | 43 |         mutable btSimdScalar    m_appliedImpulse; | 
|---|
| [1963] | 44 |          | 
|---|
| [2882] | 45 |          | 
|---|
| [1963] | 46 |         btScalar        m_friction; | 
|---|
 | 47 |         btScalar        m_jacDiagABInv; | 
|---|
| [2882] | 48 |         union | 
|---|
 | 49 |         { | 
|---|
 | 50 |                 int     m_numConsecutiveRowsPerKernel; | 
|---|
 | 51 |                 btScalar        m_unusedPadding0; | 
|---|
 | 52 |         }; | 
|---|
| [1963] | 53 |  | 
|---|
| [2882] | 54 |         union | 
|---|
 | 55 |         { | 
|---|
 | 56 |                 int                     m_frictionIndex; | 
|---|
 | 57 |                 btScalar        m_unusedPadding1; | 
|---|
 | 58 |         }; | 
|---|
 | 59 |         union | 
|---|
 | 60 |         { | 
|---|
| [8351] | 61 |                 btRigidBody*    m_solverBodyA; | 
|---|
 | 62 |                 int                             m_companionIdA; | 
|---|
| [2882] | 63 |         }; | 
|---|
 | 64 |         union | 
|---|
 | 65 |         { | 
|---|
| [8351] | 66 |                 btRigidBody*    m_solverBodyB; | 
|---|
 | 67 |                 int                             m_companionIdB; | 
|---|
| [2882] | 68 |         }; | 
|---|
| [1963] | 69 |          | 
|---|
| [2882] | 70 |         union | 
|---|
 | 71 |         { | 
|---|
 | 72 |                 void*           m_originalContactPoint; | 
|---|
 | 73 |                 btScalar        m_unusedPadding4; | 
|---|
 | 74 |         }; | 
|---|
| [1963] | 75 |  | 
|---|
| [2882] | 76 |         btScalar                m_rhs; | 
|---|
 | 77 |         btScalar                m_cfm; | 
|---|
 | 78 |         btScalar                m_lowerLimit; | 
|---|
 | 79 |         btScalar                m_upperLimit; | 
|---|
| [1963] | 80 |  | 
|---|
| [8351] | 81 |         btScalar                m_rhsPenetration; | 
|---|
 | 82 |  | 
|---|
| [1963] | 83 |         enum            btSolverConstraintType | 
|---|
 | 84 |         { | 
|---|
 | 85 |                 BT_SOLVER_CONTACT_1D = 0, | 
|---|
 | 86 |                 BT_SOLVER_FRICTION_1D | 
|---|
 | 87 |         }; | 
|---|
 | 88 | }; | 
|---|
 | 89 |  | 
|---|
| [2882] | 90 | typedef btAlignedObjectArray<btSolverConstraint>        btConstraintArray; | 
|---|
| [1963] | 91 |  | 
|---|
 | 92 |  | 
|---|
 | 93 | #endif //BT_SOLVER_CONSTRAINT_H | 
|---|
 | 94 |  | 
|---|
 | 95 |  | 
|---|
 | 96 |  | 
|---|