Ignore:
Timestamp:
06/14/08 03:38:30 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/CHC_revisited/chcdemo.cpp

    r2757 r2758  
    103103void mouse(int button, int state, int x, int y); 
    104104void leftMotion(int x, int y); 
     105void rightMotion(int x, int y); 
    105106void middleMotion(int x, int y); 
    106107void drawEyeView(void); 
     
    112113 
    113114 
    114 void SetupProjection(int w, int h, float angle, const AxisAlignedBox3 &sceneBox) 
    115 { 
    116         glViewport(0, 0, w, h); 
    117         glMatrixMode(GL_PROJECTION); 
    118         glLoadIdentity(); 
    119  
    120         gluPerspective(angle, 1.0, 1.0f, 2.0 * Magnitude(sceneBox.Diagonal())); 
    121         glMatrixMode(GL_MODELVIEW); 
    122 } 
    123  
    124115 
    125116int main(int argc, char* argv[]) 
    126117{ 
     118        camera = new Camera(800, 600); 
     119 
    127120        glutInitWindowSize(800, 600); 
    128121        glutInit(&argc, argv); 
     
    149142        const string filename("city.dem"); 
    150143 
    151         camera = new Camera(800, 600); 
    152  
    153144        if (loader.Load(filename, sceneEntities)) 
    154145                cout << "scene " << filename << " loaded" << endl; 
     
    165156        Debug << "scene box: " << sceneBox << endl; 
    166157 
    167         SetupProjection(800, 600, 60, sceneBox); 
     158        //SetupProjection(800, 600, 60, sceneBox); 
    168159        //camera->LookAtBox(sceneBox); 
    169160        camera->LookInBox(sceneBox); 
     
    319310void SetupEyeView(void) 
    320311{ 
    321         SetupProjection(800,600,60,sceneBox); 
     312        //SetupProjection(800,600,60,sceneBox); 
    322313        glMatrixMode(GL_MODELVIEW); 
    323314        camera->SetupCameraView(); 
     
    624615        winHeight = h; 
    625616 
    626         if(w) winAspectRatio = (double) h / (double) w; 
    627  
    628         //perspectiveDeg(eyeProjection, 60.0, 1.0/winAspectRatio, nearDist, 150.0); 
     617        if (w) winAspectRatio = (double) h / (double) w; 
     618 
     619        glMatrixMode(GL_PROJECTION); 
     620        glLoadIdentity(); 
     621 
     622        gluPerspective(60.0f, 1.0f / winAspectRatio, nearDist, 2.0 * Magnitude(sceneBox.Diagonal())); 
     623        glMatrixMode(GL_MODELVIEW); 
     624 
     625        //perspectiveDeg(eyeProjection, 60.0, 1.0f/winAspectRatio, nearDist, 150.0); 
    629626 
    630627        glutPostRedisplay(); 
     
    634631void mouse(int button, int state, int x, int y)  
    635632{ 
    636         if(((button == GLUT_LEFT_BUTTON) || (button == GLUT_RIGHT_BUTTON)) && state == GLUT_DOWN)  
     633        if ((button == GLUT_LEFT_BUTTON) && (state == GLUT_DOWN)) 
    637634        { 
    638635                xEyeBegin = x; 
     
    641638                glutMotionFunc(leftMotion); 
    642639        } 
    643         else if(button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) 
     640        else if ((button == GLUT_RIGHT_BUTTON) && (state == GLUT_DOWN)) 
     641        { 
     642                yEyeBegin = y; 
     643                yMotionBegin = y; 
     644 
     645                glutMotionFunc(rightMotion); 
     646        } 
     647        else if ((button == GLUT_MIDDLE_BUTTON) && (state == GLUT_DOWN)) 
    644648        { 
    645649                horizontalMotionBegin = x; 
     
    651655} 
    652656 
    653 /** 
    654         rotation for left/right mouse drag 
     657 
     658/**     rotation for left/right mouse drag 
    655659        motion for up/down mouse drag 
    656660*/ 
    657661void leftMotion(int x, int y)  
    658662{ 
    659         static double eyeXAngle = 0.0; 
    660         // not move in the vertical direction 
    661         Vector3 horView = Vector3(viewDir[0], 0, viewDir[2]); 
    662          
    663         eyeXAngle = 0.6 *  M_PI * (xEyeBegin - x) / 180.0; 
    664  
    665         /* 
    666         linCombVector3(eyePos, eyePos, horView, (yMotionBegin - y) * 0.1); 
    667          
    668         rotateVectorY(viewDir, eyeXAngle); 
     663        static float eyeXAngle = 0.0f; 
     664 
     665        Vector3 viewDir = camera->GetDirection(); 
     666        Vector3 pos = camera->GetPosition(); 
     667 
     668        // don't move in the vertical direction 
     669        Vector3 horView(viewDir[0], 0, viewDir[2]); 
     670         
     671        eyeXAngle = -0.2f *  M_PI * (xEyeBegin - x) / 180.0; 
     672 
     673        // rotate view vector 
     674        Matrix4x4 rot = RotationYMatrix(eyeXAngle); 
     675        viewDir = rot * viewDir; 
     676 
     677        pos += horView * (yMotionBegin - y) * 0.2f; 
     678 
     679        camera->SetDirection(viewDir); 
     680        camera->SetPosition(pos); 
    669681         
    670682        xEyeBegin = x; 
    671683        yMotionBegin = y; 
    672         */ 
     684 
    673685        glutPostRedisplay(); 
    674686} 
     687 
     688 
     689/**     rotation for left/right mouse drag 
     690        motion for up/down mouse drag 
     691*/ 
     692void rightMotion(int x, int y)  
     693{ 
     694        static float eyeYAngle = 0.0f; 
     695 
     696        Vector3 viewDir = camera->GetDirection(); 
     697        Vector3 right = camera->GetRightVector(); 
     698 
     699        eyeYAngle = -0.2f *  M_PI * (yEyeBegin - y) / 180.0; 
     700 
     701        // rotate view vector 
     702        Matrix4x4 rot = RotationAxisMatrix(right, eyeYAngle); 
     703        viewDir = rot * viewDir; 
     704 
     705        camera->SetDirection(viewDir); 
     706                 
     707        yEyeBegin = y; 
     708         
     709        glutPostRedisplay(); 
     710} 
     711 
    675712 
    676713// strafe 
    677714void middleMotion(int x, int y)  
    678715{ 
     716        Vector3 viewDir = camera->GetDirection(); 
     717        Vector3 pos = camera->GetPosition(); 
     718 
    679719        // the 90 degree rotated view vector  
    680720        // y zero so we don't move in the vertical 
    681         Vector3 rVec = Vector3(viewDir[0], 0, viewDir[2]); 
    682          
    683         /*rotateVectorY(rVec, PI / 2.0); 
    684         linCombVector3(eyePos, eyePos, rVec, (horizontalMotionBegin - x) * 0.1); 
    685          
    686         eyePos[1] += (verticalMotionBegin - y) * 0.1; 
     721        Vector3 rVec(viewDir[0], 0, viewDir[2]); 
     722         
     723        Matrix4x4 rot = RotationYMatrix(M_PI * 0.5f); 
     724        rVec = rot * rVec; 
     725         
     726        pos += rVec * (x - horizontalMotionBegin) * 0.1f; 
     727        pos[1] += (verticalMotionBegin - y) * 0.1f; 
     728 
     729        camera->SetPosition(pos); 
    687730 
    688731        horizontalMotionBegin = x; 
    689732        verticalMotionBegin = y; 
    690 */ 
     733 
    691734        glutPostRedisplay(); 
    692735} 
Note: See TracChangeset for help on using the changeset viewer.