* correct for real the Makefile
[hkl3d.git] / test / gui / OpenGL / GLDebugDrawer.cpp
blob7933ade9fa49178afa95670476272d90a4637cba
2 #include "GLDebugDrawer.h"
3 #include "GLDebugFont.h"
4 #include "GlutStuff.h"
8 #include <stdio.h> //printf debugging
9 GLDebugDrawer::GLDebugDrawer()
10 :m_debugMode(0)
15 void GLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& fromColor, const btVector3& toColor)
17 glBegin(GL_LINES);
18 glColor3f(fromColor.getX(), fromColor.getY(), fromColor.getZ());
19 glVertex3d(from.getX(), from.getY(), from.getZ());
20 glColor3f(toColor.getX(), toColor.getY(), toColor.getZ());
21 glVertex3d(to.getX(), to.getY(), to.getZ());
22 glEnd();
25 void GLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& color)
27 drawLine(from,to,color,color);
30 void GLDebugDrawer::drawSphere (const btVector3& p, btScalar radius, const btVector3& color)
32 glColor4f (color.getX(), color.getY(), color.getZ(), btScalar(1.0f));
33 glPushMatrix ();
34 glTranslatef (p.getX(), p.getY(), p.getZ());
36 int lats = 5;
37 int longs = 5;
39 int i, j;
40 for(i = 0; i <= lats; i++) {
41 btScalar lat0 = SIMD_PI * (-btScalar(0.5) + (btScalar) (i - 1) / lats);
42 btScalar z0 = radius*sin(lat0);
43 btScalar zr0 = radius*cos(lat0);
45 btScalar lat1 = SIMD_PI * (-btScalar(0.5) + (btScalar) i / lats);
46 btScalar z1 = radius*sin(lat1);
47 btScalar zr1 = radius*cos(lat1);
49 glBegin(GL_QUAD_STRIP);
50 for(j = 0; j <= longs; j++) {
51 btScalar lng = 2 * SIMD_PI * (btScalar) (j - 1) / longs;
52 btScalar x = cos(lng);
53 btScalar y = sin(lng);
55 glNormal3f(x * zr0, y * zr0, z0);
56 glVertex3f(x * zr0, y * zr0, z0);
57 glNormal3f(x * zr1, y * zr1, z1);
58 glVertex3f(x * zr1, y * zr1, z1);
60 glEnd();
63 glPopMatrix();
66 void GLDebugDrawer::drawBox (const btVector3& boxMin, const btVector3& boxMax, const btVector3& color, btScalar alpha)
68 btVector3 halfExtent = (boxMax - boxMin) * btScalar(0.5f);
69 btVector3 center = (boxMax + boxMin) * btScalar(0.5f);
70 //glEnable(GL_BLEND); // Turn blending On
71 //glBlendFunc(GL_SRC_ALPHA, GL_ONE);
72 glColor4f (color.getX(), color.getY(), color.getZ(), alpha);
73 glPushMatrix ();
74 glTranslatef (center.getX(), center.getY(), center.getZ());
75 glScaled(2*halfExtent[0], 2*halfExtent[1], 2*halfExtent[2]);
76 // glutSolidCube(1.0);
77 glPopMatrix ();
78 //glDisable(GL_BLEND);
81 void GLDebugDrawer::drawTriangle(const btVector3& a,const btVector3& b,const btVector3& c,const btVector3& color,btScalar alpha)
83 // if (m_debugMode > 0)
85 const btVector3 n=btCross(b-a,c-a).normalized();
86 glBegin(GL_TRIANGLES);
87 glColor4f(color.getX(), color.getY(), color.getZ(),alpha);
88 glNormal3d(n.getX(),n.getY(),n.getZ());
89 glVertex3d(a.getX(),a.getY(),a.getZ());
90 glVertex3d(b.getX(),b.getY(),b.getZ());
91 glVertex3d(c.getX(),c.getY(),c.getZ());
92 glEnd();
96 void GLDebugDrawer::setDebugMode(int debugMode)
98 m_debugMode = debugMode;
102 void GLDebugDrawer::draw3dText(const btVector3& location,const char* textString)
104 glRasterPos3f(location.x(), location.y(), location.z());
105 //BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),textString);
108 void GLDebugDrawer::reportErrorWarning(const char* warningString)
110 printf("%s\n",warningString);
113 void GLDebugDrawer::drawContactPoint(const btVector3& pointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)
117 btVector3 to=pointOnB+normalOnB*distance;
118 const btVector3&from = pointOnB;
119 glColor4f(color.getX(), color.getY(), color.getZ(),1.f);
120 //glColor4f(0,0,0,1.f);
122 glBegin(GL_LINES);
123 glVertex3d(from.getX(), from.getY(), from.getZ());
124 glVertex3d(to.getX(), to.getY(), to.getZ());
125 glEnd();
128 glRasterPos3f(from.x(), from.y(), from.z());
129 char buf[12];
130 sprintf(buf," %d",lifeTime);
131 //BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),buf);