void clientMoveAndDisplay() { if ( !g_pauseAnim ) { SimdMatrix3x3 rot; rot.setEulerZYX( g_animAngle * 0.05, g_animAngle * 0.05, g_animAngle * 0.05 ); SimdTransform t; t.setIdentity(); t.setBasis( rot ); //g_convexShapesTransform[ 0 ].mult( g_convexShapesTransform[ 0 ], t ); g_convexShapesTransform[ 1 ].mult( g_convexShapesTransform[ 1 ], t ); g_shapesPenetrate = calcPenDepth(); } clientDisplay(); }
void LinearConvexCastDemo::initPhysics() { setCameraDistance(30.f); tr[0].setOrigin(SimdVector3(0,0,0)); tr[1].setOrigin(SimdVector3(0,10,0)); SimdMatrix3x3 basisA; basisA.setValue(0.99999958f,0.00022980258f,0.00090992288f, -0.00029313788f,0.99753088f,0.070228584f, -0.00089153741f,-0.070228823f,0.99753052f); SimdMatrix3x3 basisB; basisB.setValue(1.0000000f,4.4865553e-018f,-4.4410586e-017f, 4.4865495e-018f,0.97979438f,0.20000751f, 4.4410586e-017f,-0.20000751f,0.97979438f); tr[0].setBasis(basisA); tr[1].setBasis(basisB); SimdVector3 boxHalfExtentsA(0.2,4,4); SimdVector3 boxHalfExtentsB(6,6,6); BoxShape* boxA = new BoxShape(boxHalfExtentsA); /* BU_Simplex1to4 boxB; boxB.AddVertex(SimdPoint3(-5,0,-5)); boxB.AddVertex(SimdPoint3(5,0,-5)); boxB.AddVertex(SimdPoint3(0,0,5)); boxB.AddVertex(SimdPoint3(0,5,0)); */ BoxShape* boxB = new BoxShape(boxHalfExtentsB); shapePtr[0] = boxA; shapePtr[1] = boxB; shapePtr[0]->SetMargin(0.01f); shapePtr[1]->SetMargin(0.01f); SimdTransform tr; tr.setIdentity(); }
int main(int argc,char** argv) { clientResetScene(); SimdMatrix3x3 basisA; basisA.setIdentity(); SimdMatrix3x3 basisB; basisB.setIdentity(); objects[0].m_worldTransform.setBasis(basisA); objects[1].m_worldTransform.setBasis(basisB); SimdPoint3 points0[3]={SimdPoint3(1,0,0),SimdPoint3(0,1,0),SimdPoint3(0,0,1)}; SimdPoint3 points1[5]={SimdPoint3(1,0,0),SimdPoint3(0,1,0),SimdPoint3(0,0,1),SimdPoint3(0,0,-1),SimdPoint3(-1,-1,0)}; BoxShape boxA(SimdVector3(1,1,1)); BoxShape boxB(SimdVector3(0.5,0.5,0.5)); //ConvexHullShape hullA(points0,3); //hullA.setLocalScaling(SimdVector3(3,3,3)); //ConvexHullShape hullB(points1,4); //hullB.setLocalScaling(SimdVector3(4,4,4)); objects[0].m_collisionShape = &boxA;//&hullA; objects[1].m_collisionShape = &boxB;//&hullB; CollisionDispatcher dispatcher; //SimpleBroadphase broadphase; SimdVector3 worldAabbMin(-1000,-1000,-1000); SimdVector3 worldAabbMax(1000,1000,1000); AxisSweep3 broadphase(worldAabbMin,worldAabbMax); collisionWorld = new CollisionWorld(&dispatcher,&broadphase); collisionWorld->AddCollisionObject(&objects[0]); collisionWorld->AddCollisionObject(&objects[1]); return glutmain(argc, argv,screenWidth,screenHeight,"Collision Interface Demo"); }
int main(int argc,char** argv) { setCameraDistance(20.f); tr[0].setOrigin(SimdVector3(0.0013328250f,8.1363249f,7.0390840f)); tr[1].setOrigin(SimdVector3(0.00000000f,9.1262732f,2.0343180f)); //tr[0].setOrigin(SimdVector3(0,0,0)); //tr[1].setOrigin(SimdVector3(0,10,0)); SimdMatrix3x3 basisA; basisA.setValue(0.99999958f,0.00022980258f,0.00090992288f, -0.00029313788f,0.99753088f,0.070228584f, -0.00089153741f,-0.070228823f,0.99753052f); SimdMatrix3x3 basisB; basisB.setValue(1.0000000f,4.4865553e-018f,-4.4410586e-017f, 4.4865495e-018f,0.97979438f,0.20000751f, 4.4410586e-017f,-0.20000751f,0.97979438f); tr[0].setBasis(basisA); tr[1].setBasis(basisB); SimdVector3 boxHalfExtentsA(1.0000004768371582f,1.0000004768371582f,1.0000001192092896f); SimdVector3 boxHalfExtentsB(3.2836332321166992f,3.2836332321166992f,3.2836320400238037f); BoxShape boxA(boxHalfExtentsA); BoxShape boxB(boxHalfExtentsB); shapePtr[0] = &boxA; shapePtr[1] = &boxB; SimdTransform tr; tr.setIdentity(); return glutmain(argc, argv,screenWidth,screenHeight,"Collision Demo"); }
void clientKeyboard(unsigned char key, int x, int y) { if ( key == 'R' || key == 'r' ) { destroyShapes(); g_shapesType[ 0 ] = randomShapeType( 0, 1 ); g_shapesType[ 1 ] = randomShapeType( 0, 1 ); ( g_shapesType[ 0 ] == 0 ) ? createBoxShape( 0 ) : createSphereShape( 0 ); ( g_shapesType[ 1 ] == 0 ) ? createBoxShape( 1 ) : createSphereShape( 1 ); g_shapesPenetrate = calcPenDepth(); } else if ( key == 'Q' || key == 'q' ) { destroyShapes(); } else if ( key == 'T' || key == 't' ) { #ifdef DEBUG_ME SimdVector3 shapeAPos = g_convexShapesTransform[ 0 ].getOrigin(); SimdVector3 shapeBPos = g_convexShapesTransform[ 1 ].getOrigin(); SimdMatrix3x3 shapeARot = g_convexShapesTransform[ 0 ].getBasis(); SimdMatrix3x3 shapeBRot = g_convexShapesTransform[ 1 ].getBasis(); FILE* fp = 0; fopen_s( &fp, "shapes.txt", "w" ); char str[ 256 ]; sprintf_s( str, 256, "PosA: %f, %f, %f\nPosB: %f, %f, %f\n", shapeAPos.x(), shapeAPos.y(), shapeAPos.z(), shapeBPos.x(), shapeBPos.y(), shapeBPos.z() ); fputs( str, fp ); sprintf_s( str, 256, "RotA: %f, %f, %f\n%f, %f, %f\n%f, %f, %f\nRotB: %f, %f, %f\n%f, %f, %f\n%f, %f, %f\n\n", shapeARot.getRow( 0 ).x(), shapeARot.getRow( 0 ).y(), shapeARot.getRow( 0 ).z(), shapeARot.getRow( 1 ).x(), shapeARot.getRow( 1 ).y(), shapeARot.getRow( 1 ).z(), shapeARot.getRow( 2 ).x(), shapeARot.getRow( 2 ).y(), shapeARot.getRow( 2 ).z(), shapeBRot.getRow( 0 ).x(), shapeBRot.getRow( 0 ).y(), shapeBRot.getRow( 0 ).z(), shapeBRot.getRow( 1 ).x(), shapeBRot.getRow( 1 ).y(), shapeBRot.getRow( 1 ).z(), shapeBRot.getRow( 2 ).x(), shapeBRot.getRow( 2 ).y(), shapeBRot.getRow( 2 ).z()); fputs( str, fp ); fclose( fp ); #endif //DEBUG_ME } else if ( key == 'P' || key =='p' ) { g_pauseAnim = !g_pauseAnim; } defaultKeyboard(key, x, y); }