summaryrefslogtreecommitdiff
path: root/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h')
-rw-r--r--thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h195
1 files changed, 0 insertions, 195 deletions
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h b/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h
deleted file mode 100644
index 83521b9501..0000000000
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-Bullet Continuous Collision Detection and Physics Library
-Copyright (c) 2013 Erwin Coumans http://bulletphysics.org
-
-This software is provided 'as-is', without any express or implied warranty.
-In no event will the authors be held liable for any damages arising from the use of this software.
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it freely,
-subject to the following restrictions:
-
-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.
-3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef BT_MULTIBODY_CONSTRAINT_H
-#define BT_MULTIBODY_CONSTRAINT_H
-
-#include "LinearMath/btScalar.h"
-#include "LinearMath/btAlignedObjectArray.h"
-#include "btMultiBody.h"
-
-class btMultiBody;
-struct btSolverInfo;
-
-#include "btMultiBodySolverConstraint.h"
-
-struct btMultiBodyJacobianData
-{
- btAlignedObjectArray<btScalar> m_jacobians;
- btAlignedObjectArray<btScalar> m_deltaVelocitiesUnitImpulse; //holds the joint-space response of the corresp. tree to the test impulse in each constraint space dimension
- btAlignedObjectArray<btScalar> m_deltaVelocities; //holds joint-space vectors of all the constrained trees accumulating the effect of corrective impulses applied in SI
- btAlignedObjectArray<btScalar> scratch_r;
- btAlignedObjectArray<btVector3> scratch_v;
- btAlignedObjectArray<btMatrix3x3> scratch_m;
- btAlignedObjectArray<btSolverBody>* m_solverBodyPool;
- int m_fixedBodyId;
-
-};
-
-
-ATTRIBUTE_ALIGNED16(class) btMultiBodyConstraint
-{
-protected:
-
- btMultiBody* m_bodyA;
- btMultiBody* m_bodyB;
- int m_linkA;
- int m_linkB;
-
- int m_numRows;
- int m_jacSizeA;
- int m_jacSizeBoth;
- int m_posOffset;
-
- bool m_isUnilateral;
- int m_numDofsFinalized;
- btScalar m_maxAppliedImpulse;
-
-
- // warning: the data block lay out is not consistent for all constraints
- // data block laid out as follows:
- // cached impulses. (one per row.)
- // jacobians. (interleaved, row1 body1 then row1 body2 then row2 body 1 etc)
- // positions. (one per row.)
- btAlignedObjectArray<btScalar> m_data;
-
- void applyDeltaVee(btMultiBodyJacobianData& data, btScalar* delta_vee, btScalar impulse, int velocityIndex, int ndof);
-
- btScalar fillMultiBodyConstraint(btMultiBodySolverConstraint& solverConstraint,
- btMultiBodyJacobianData& data,
- btScalar* jacOrgA, btScalar* jacOrgB,
- const btVector3& constraintNormalAng,
-
- const btVector3& constraintNormalLin,
- const btVector3& posAworld, const btVector3& posBworld,
- btScalar posError,
- const btContactSolverInfo& infoGlobal,
- btScalar lowerLimit, btScalar upperLimit,
- bool angConstraint = false,
-
- btScalar relaxation = 1.f,
- bool isFriction = false, btScalar desiredVelocity=0, btScalar cfmSlip=0);
-
-public:
-
- BT_DECLARE_ALIGNED_ALLOCATOR();
-
- btMultiBodyConstraint(btMultiBody* bodyA,btMultiBody* bodyB,int linkA, int linkB, int numRows, bool isUnilateral);
- virtual ~btMultiBodyConstraint();
-
- void updateJacobianSizes();
- void allocateJacobiansMultiDof();
-
- //many constraints have setFrameInB/setPivotInB. Will use 'getConstraintType' later.
- virtual void setFrameInB(const btMatrix3x3& frameInB) {}
- virtual void setPivotInB(const btVector3& pivotInB){}
-
- virtual void finalizeMultiDof()=0;
-
- virtual int getIslandIdA() const =0;
- virtual int getIslandIdB() const =0;
-
- virtual void createConstraintRows(btMultiBodyConstraintArray& constraintRows,
- btMultiBodyJacobianData& data,
- const btContactSolverInfo& infoGlobal)=0;
-
- int getNumRows() const
- {
- return m_numRows;
- }
-
- btMultiBody* getMultiBodyA()
- {
- return m_bodyA;
- }
- btMultiBody* getMultiBodyB()
- {
- return m_bodyB;
- }
-
- void internalSetAppliedImpulse(int dof, btScalar appliedImpulse)
- {
- btAssert(dof>=0);
- btAssert(dof < getNumRows());
- m_data[dof] = appliedImpulse;
-
- }
-
- btScalar getAppliedImpulse(int dof)
- {
- btAssert(dof>=0);
- btAssert(dof < getNumRows());
- return m_data[dof];
- }
- // current constraint position
- // constraint is pos >= 0 for unilateral, or pos = 0 for bilateral
- // NOTE: ignored position for friction rows.
- btScalar getPosition(int row) const
- {
- return m_data[m_posOffset + row];
- }
-
- void setPosition(int row, btScalar pos)
- {
- m_data[m_posOffset + row] = pos;
- }
-
-
- bool isUnilateral() const
- {
- return m_isUnilateral;
- }
-
- // jacobian blocks.
- // each of size 6 + num_links. (jacobian2 is null if no body2.)
- // format: 3 'omega' coefficients, 3 'v' coefficients, then the 'qdot' coefficients.
- btScalar* jacobianA(int row)
- {
- return &m_data[m_numRows + row * m_jacSizeBoth];
- }
- const btScalar* jacobianA(int row) const
- {
- return &m_data[m_numRows + (row * m_jacSizeBoth)];
- }
- btScalar* jacobianB(int row)
- {
- return &m_data[m_numRows + (row * m_jacSizeBoth) + m_jacSizeA];
- }
- const btScalar* jacobianB(int row) const
- {
- return &m_data[m_numRows + (row * m_jacSizeBoth) + m_jacSizeA];
- }
-
- btScalar getMaxAppliedImpulse() const
- {
- return m_maxAppliedImpulse;
- }
- void setMaxAppliedImpulse(btScalar maxImp)
- {
- m_maxAppliedImpulse = maxImp;
- }
-
- virtual void debugDraw(class btIDebugDraw* drawer)=0;
-
- virtual void setGearRatio(btScalar ratio) {}
- virtual void setGearAuxLink(int gearAuxLink) {}
- virtual void setRelativePositionTarget(btScalar relPosTarget){}
- virtual void setErp(btScalar erp){}
-
-
-};
-
-#endif //BT_MULTIBODY_CONSTRAINT_H
-