From dacb24e968a3477e76239312ed13e02f4ba2f1ba Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Wed, 14 Dec 2011 09:10:12 +0000 Subject: [PATCH] pass in const vectors into btUniversalConstraint and normalize the local copy Thanks to SkewMatrix for the patch, http://code.google.com/p/bullet/issues/detail?id=571 --- .../ConstraintSolver/btUniversalConstraint.cpp | 6 +++--- src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp index 40c56e779..b009f41ae 100644 --- a/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp @@ -27,7 +27,7 @@ subject to the following restrictions: // constructor // anchor, axis1 and axis2 are in world coordinate system // axis1 must be orthogonal to axis2 -btUniversalConstraint::btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2) +btUniversalConstraint::btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, const btVector3& anchor, const btVector3& axis1, const btVector3& axis2) : btGeneric6DofConstraint(rbA, rbB, btTransform::getIdentity(), btTransform::getIdentity(), true), m_anchor(anchor), m_axis1(axis1), @@ -42,8 +42,8 @@ btUniversalConstraint::btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, // new position of X, allowed limits are (-PI,PI); // So to simulate ODE Universal joint we should use parent axis as Z, child axis as Y and limit all other DOFs // Build the frame in world coordinate system first - btVector3 zAxis = axis1.normalize(); - btVector3 yAxis = axis2.normalize(); + btVector3 zAxis = m_axis1.normalize(); + btVector3 yAxis = m_axis2.normalize(); btVector3 xAxis = yAxis.cross(zAxis); // we want right coordinate system btTransform frameInW; frameInW.setIdentity(); diff --git a/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h b/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h index bfa48f425..a86939164 100644 --- a/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h @@ -41,7 +41,7 @@ public: // constructor // anchor, axis1 and axis2 are in world coordinate system // axis1 must be orthogonal to axis2 - btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2); + btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, const btVector3& anchor, const btVector3& axis1, const btVector3& axis2); // access const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); } const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); }