17 #ifndef BT_IDEBUG_DRAW__H    18 #define BT_IDEBUG_DRAW__H    44                 :       m_activeObject(1,1,1),
    45                         m_deactivatedObject(0,1,0),
    46                         m_wantsDeactivationObject(0,1,1),
    47                         m_disabledDeactivationObject(1,0,0),
    48                         m_disabledSimulationObject(1,1,0),
   104                 drawSpherePatch(center, up, axis, radius,minTh, maxTh, minPs, maxPs, color, stepDegrees ,
false);
   105                 drawSpherePatch(center, up, -axis, radius,minTh, maxTh, minPs, maxPs, color, stepDegrees,
false );
   149                                 pa = 
btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],                
   150                                         edgecoord[2]*halfExtents[2]);
   153                                 int othercoord = j%3;
   154                                 edgecoord[othercoord]*=-1.f;
   155                                 pb = 
btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],        
   156                                         edgecoord[2]*halfExtents[2]);
   180                 int nSteps = (int)
btFabs((maxAngle - minAngle) / step);
   181                 if(!nSteps) nSteps = 1;
   187                 for(
int i = 1; i <= nSteps; i++)
   228                         drawN = drawS = 
true;
   230                 int n_hor = (int)((maxTh - minTh) / step) + 1;
   231                 if(n_hor < 2) n_hor = 2;
   233                 bool isClosed = 
false;
   248                 int n_vert = (int)((maxPs - minPs) / step) + 1;
   249                 if(n_vert < 2) n_vert = 2;
   251                 for(
int i = 0; i < n_hor; i++)
   256                         for(
int j = 0; j < n_vert; j++)
   261                                 pvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv;
   278                                 if((i == (n_hor - 1)) && drawN)
   294                                                 if(((!i) || (i == (n_hor-1))) && ((!j) || (j == (n_vert-1))))
   301                         pT = pvA; pvA = pvB; pvB = pT;
   339                 int stepDegrees = 30;
   342                 capStart[upAxis] = -halfHeight;
   345                 capEnd[upAxis] = halfHeight;
   351                         childTransform.
getOrigin() = transform * capStart;
   361                                 drawSpherePatch(center, up, axis, radius,minTh, maxTh, minPs, maxPs, color, 
btScalar(stepDegrees) ,
false);
   370                         childTransform.
getOrigin() = transform * capEnd;
   379                                 drawSpherePatch(center, up, axis, radius,minTh, maxTh, minPs, maxPs, color, 
btScalar(stepDegrees) ,
false);
   386                 for (
int i=0;i<360;i+=stepDegrees)
   389                         capEnd[(upAxis+2)%3] = capStart[(upAxis+2)%3]  = 
btCos(
btScalar(i)*SIMD_RADS_PER_DEG)*radius;
   399                 offsetHeight[upAxis] = halfHeight;
   402                 capStart[upAxis] = -halfHeight;
   404                 capEnd[upAxis] = halfHeight;
   406                 for (
int i=0;i<360;i+=stepDegrees)
   409                         capEnd[(upAxis+2)%3] = capStart[(upAxis+2)%3]  = 
btCos(
btScalar(i)*SIMD_RADS_PER_DEG)*radius;
   416                 xaxis[(upAxis+1)%3] = 
btScalar(1.0);
   423                 int stepDegrees = 30;
   428                 offsetHeight[upAxis] = halfHeight;
   430                 offsetRadius[(upAxis+1)%3] = radius;
   432                 offset2Radius[(upAxis+2)%3] = radius;
   436                 capEnd[upAxis] = -halfHeight;
   438                 for (
int i=0;i<360;i+=stepDegrees)
   445                 drawLine(start+transform.
getBasis() * (offsetHeight),start+transform.
getBasis() * (-offsetHeight+offsetRadius),color);
   446                 drawLine(start+transform.
getBasis() * (offsetHeight),start+transform.
getBasis() * (-offsetHeight-offsetRadius),color);
   447                 drawLine(start+transform.
getBasis() * (offsetHeight),start+transform.
getBasis() * (-offsetHeight+offset2Radius),color);
   448                 drawLine(start+transform.
getBasis() * (offsetHeight),start+transform.
getBasis() * (-offsetHeight-offset2Radius),color);
   454                 xaxis[(upAxis+1)%3] = 
btScalar(1.0);
   460                 btVector3 planeOrigin = planeNormal * planeConst;
   464                 btVector3 pt0 = planeOrigin + vec0*vecLen;
   465                 btVector3 pt1 = planeOrigin - vec0*vecLen;
   466                 btVector3 pt2 = planeOrigin + vec1*vecLen;
   467                 btVector3 pt3 = planeOrigin - vec1*vecLen;
   468                 drawLine(transform*pt0,transform*pt1,color);
   469                 drawLine(transform*pt2,transform*pt3,color);
   478 #endif //BT_IDEBUG_DRAW__H 
virtual void drawBox(const btVector3 &bbMin, const btVector3 &bbMax, const btTransform &trans, const btVector3 &color)
virtual void drawSphere(const btVector3 &p, btScalar radius, const btVector3 &color)
btVector3 m_wantsDeactivationObject
btVector3 m_deactivatedObject
btScalar btSin(btScalar x)
virtual void reportErrorWarning(const char *warningString)=0
virtual void drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &color)=0
virtual void drawTriangle(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2, const btVector3 &color, btScalar)
virtual void drawBox(const btVector3 &bbMin, const btVector3 &bbMax, const btVector3 &color)
void btPlaneSpace1(const T &n, T &p, T &q)
virtual void drawPlane(const btVector3 &planeNormal, btScalar planeConst, const btTransform &transform, const btVector3 &color)
virtual void drawArc(const btVector3 ¢er, const btVector3 &normal, const btVector3 &axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle, const btVector3 &color, bool drawSect, btScalar stepDegrees=btScalar(10.f))
btVector3 getColumn(int i) const 
Get a column of the matrix as a vector. 
btVector3 m_disabledSimulationObject
virtual void drawCapsule(btScalar radius, btScalar halfHeight, int upAxis, const btTransform &transform, const btVector3 &color)
virtual void drawContactPoint(const btVector3 &PointOnB, const btVector3 &normalOnB, btScalar distance, int lifeTime, const btVector3 &color)=0
virtual void drawSpherePatch(const btVector3 ¢er, const btVector3 &up, const btVector3 &axis, btScalar radius, btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3 &color, btScalar stepDegrees=btScalar(10.f), bool drawCenter=true)
virtual void draw3dText(const btVector3 &location, const char *textString)=0
virtual void drawCone(btScalar radius, btScalar height, int upAxis, const btTransform &transform, const btVector3 &color)
btVector3 cross(const btVector3 &v) const 
Return the cross product between this and another vector. 
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
virtual void flushLines()
virtual void drawAabb(const btVector3 &from, const btVector3 &to, const btVector3 &color)
virtual void setDefaultColors(const DefaultColors &)
the default implementation for setDefaultColors has no effect. A derived class can implement it and s...
btVector3 can be used to represent 3D points and vectors. 
#define ATTRIBUTE_ALIGNED16(a)
virtual void drawTriangle(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2, const btVector3 &, const btVector3 &, const btVector3 &, const btVector3 &color, btScalar alpha)
virtual void drawTransform(const btTransform &transform, btScalar orthoLen)
virtual int getDebugMode() const =0
virtual void setDebugMode(int debugMode)=0
virtual void drawSphere(btScalar radius, const btTransform &transform, const btVector3 &color)
virtual void drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &fromColor, const btVector3 &toColor)
virtual DefaultColors getDefaultColors() const 
#define SIMD_RADS_PER_DEG
btVector3 m_disabledDeactivationObject
virtual void drawCylinder(btScalar radius, btScalar halfHeight, int upAxis, const btTransform &transform, const btVector3 &color)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btScalar btCos(btScalar x)
btScalar btFabs(btScalar x)