Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2952 in orxonox.OLD for orxonox/trunk/importer


Ignore:
Timestamp:
Nov 21, 2004, 11:40:54 PM (20 years ago)
Author:
bensch
Message:

orxonox/trunk/importer: rotation with quaternion implemented (thanks for quaternion and vector classes). Only left and right are wrong now

Location:
orxonox/trunk/importer
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orxonox/trunk/importer/framework.cc

    r2940 r2952  
    1414  rotatorP += rotatorV *(float)dt;
    1515 
     16
    1617  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    1718  glLoadIdentity(); // Reset the view
     
    2021  glLoadIdentity();     
    2122  gluPerspective(45.0f,500/375,0.1f,dist * 5.0f);
    22   gluLookAt (dist*sin(rotatorP),dist ,dist*cos(rotatorP), 0,0,0, 0,1,0);
     23  gluLookAt (dist* dir.x, dist *dir.y, dist *dir.z, 0,0,0, 0,1,0);
    2324
    2425  obj->draw();
     
    5253    obj = new Object();
    5354 
     55  M = Vector(wHandler.screen->w/2, wHandler.screen->h/2, 0);
     56  rotAxis = Vector (0.0,1.0,0.0);
     57  rotAngle = 0;
     58  rotQ = Quaternion (rotAngle, rotAxis);
     59
     60  dir = Vector (0.0, 0.0, 1.0);
     61
    5462  glEnable(GL_LIGHTING);
    5563  glEnable(GL_DEPTH_TEST);
     
    7785  // Hide the mouse cursor
    7886    SDL_ShowCursor(2);
     87    mouse1Down = false;
    7988
    8089  // This is the main loop for the entire program and it will run until done==TRUE
     
    92101                 event.motion.xrel, event.motion.yrel,
    93102                 event.motion.x, event.motion.y);
     103        // TRACKBALL
     104        if (mouse1Down)
     105          {
     106            Vector tmpV (event.button.x, event.button.y, 2.0*sqrt ( (float) event.button.x * event.button.x *event.button.y * event.button.y / (wHandler.screen->h *wHandler.screen->h)));
     107            p2 = tmpV-M;
     108           
     109            rotAxis = p1.cross(p2);
     110            rotAngle = angle_deg (p1, p2)/1000;
     111            rotQ = Quaternion (rotAngle, rotAxis);
     112            dir = rotQ.apply(dir);
     113            dir.normalize();
     114            printf ("%f, %f, %f, %f\n", dir.x, dir.y, dir.z, rotAngle);
     115
     116            p1 = p2;
     117          }
    94118        break;
    95119      case SDL_MOUSEBUTTONDOWN:
     
    104128            zoomTo *= 2.0;
    105129          }
     130        else if (event.button.button == 1)
     131          {
     132            mouse1Down = true;
     133            Vector tmpV (event.button.x, event.button.y, 2.0*sqrt ( (float) event.button.x * event.button.x *event.button.y * event.button.y / (wHandler.screen->h *wHandler.screen->h)));
     134            p1 = tmpV-M;
     135
     136          }
    106137        else
    107138          {
     
    112143           
    113144        break;
    114             /*      case SDL_MOUSEBUTTONUP:
     145      case SDL_MOUSEBUTTONUP:
     146        if (event.button.button == 4);
     147        else if (event.button.button == 5);
     148        else if (event.button.button == 1)
     149          mouse1Down =false;
     150        else
     151            {
    115152        printf("MouseButton %d released at (%d,%d).\n",
    116153               event.button.button, event.button.x, event.button.y);
     154            }
    117155        break;
    118             */
     156           
    119157        // If a quit event was recieved
    120158      case SDL_QUIT:
     
    125163          break;
    126164      }
     165
     166
    127167    }
    128168
  • orxonox/trunk/importer/framework.h

    r2940 r2952  
    88float rotatorP;
    99float rotatorV;
     10
    1011float dist;
    1112float zoomTo;
     
    1516Uint32 dt;
    1617
     18
     19Vector dir;
     20Vector M;
     21Vector p1;
     22Vector p2;
     23Vector rotAxis;
     24float rotAngle;
     25Quaternion rotQ;
     26
     27bool mouse1Down;
     28
    1729WindowHandler wHandler;  // Create an instance of the whandler basecode class
    1830Object* obj;
Note: See TracChangeset for help on using the changeset viewer.