Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void BasicDemo::clientMoveAndDisplay()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- float fTimeStep = 1.0/100.0;
- btTransform startTransform;
- startTransform.setIdentity();
- for (int i = 0; i<2; i++){
- btVector3 w = vVelocity[i]/fRadius;
- btVector3 axis = w.cross(btVector3(0.0,-1.0,0.0));
- btQuaternion qW(axis.x(), axis.y(), axis.z(),0.0);
- qW *= qOrientation[i];
- btQuaternion plus = qOrientation[i] + qW*(fTimeStep/2.0);
- plus = plus.normalize();
- qOrientation[i]=plus;
- vPosition[i] += vVelocity[i]*fTimeStep;
- //input data
- startTransform.setOrigin(vPosition[i]);
- startTransform.setRotation(qOrientation[i]);
- m_rigidBody[i]->getMotionState()->setWorldTransform(startTransform);
- }
- btVector3 btween(vPosition[0].x() - vPosition[1].x(), vPosition[0].y() - vPosition[1].y(), vPosition[0].z() - vPosition[1].z());
- float mag = btween.length();
- btVector3 n;
- btVector3 r1 = vPosition[0]+(btween.normalize()*fRadius); //vector of direction from center of cue ball to collision
- btVector3 r2 = vPosition[1]+((btween.normalize()*-1)*fRadius); //vector of pool ball
- if ( mag < fRadius+fRadius ) {
- collision = true;
- n = btween.normalize();
- }
- if ( collision ){
- printf("%f, %f, %f\n", n.x(), n.y(), n.z());
- collision = false;
- }
- // OpenGL calls
- m_dynamicsWorld->debugDrawWorld();
- renderme();
- glFlush();
- glutSwapBuffers();
- }
Add Comment
Please, Sign In to add comment