Commit b606443d606db241843737b395376574fab89259

Authored by Pavel Govyadinov
1 parent 003327a2

Implemented small spider, with rotation and correctional translation, using the shift key

Showing 2 changed files with 51 additions and 12 deletions   Show diff stats
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 #define VERTICAL 1 13 #define VERTICAL 1
14 #define HORIZONTAL 1 14 #define HORIZONTAL 1
15 stim::camera cam; 15 stim::camera cam;
  16 + stim::camera Parker;
16 GLuint texID; 17 GLuint texID;
17 float a = -1.0; 18 float a = -1.0;
18 float b = 1.0; 19 float b = 1.0;
@@ -39,6 +40,7 @@ @@ -39,6 +40,7 @@
39 stim::vec<float> up; 40 stim::vec<float> up;
40 stim::vec<float> d; 41 stim::vec<float> d;
41 static bool button1 = FALSE; 42 static bool button1 = FALSE;
  43 + static bool button_shift = FALSE;
42 static float degtorad = 360/(2*M_PI); 44 static float degtorad = 360/(2*M_PI);
43 static GLfloat adjustTex = 1.0/426.0; 45 static GLfloat adjustTex = 1.0/426.0;
44 static GLfloat adjustDrw = 2.0/426.0; 46 static GLfloat adjustDrw = 2.0/426.0;
@@ -76,7 +78,7 @@ glInit() @@ -76,7 +78,7 @@ glInit()
76 glLoadIdentity(); 78 glLoadIdentity();
77 glOrtho(-5.0, 2.0,-5.0, 2.0, -0.0, 1000.0); 79 glOrtho(-5.0, 2.0,-5.0, 2.0, -0.0, 1000.0);
78 glMatrixMode(GL_MODELVIEW); 80 glMatrixMode(GL_MODELVIEW);
79 - spidey = stim::gl_spider<float>(0.5, 0.5, 0.5, -0.1, -0.1, -0.1, 0.5, 0.5); 81 + spidey = stim::gl_spider<float>(0.5, 0.5, 0.5, -0.1, -0.1, -0.1, 0.1, 0.1);
80 CHECK_OPENGL_ERROR 82 CHECK_OPENGL_ERROR
81 } 83 }
82 84
@@ -303,29 +305,24 @@ renderScene() @@ -303,29 +305,24 @@ renderScene()
303 void 305 void
304 MouseButton(int button, int state, int x, int y) 306 MouseButton(int button, int state, int x, int y)
305 { 307 {
  308 +
306 if (button == GLUT_LEFT_BUTTON) 309 if (button == GLUT_LEFT_BUTTON)
307 { 310 {
308 button1 = (state == GLUT_DOWN) ? TRUE : FALSE; 311 button1 = (state == GLUT_DOWN) ? TRUE : FALSE;
  312 + button_shift = glutGetModifiers();
309 prevmousePos[0] = (float)x; 313 prevmousePos[0] = (float)x;
310 prevmousePos[1] = (float)y; 314 prevmousePos[1] = (float)y;
311 } 315 }
312 if (button == GLUT_RIGHT_BUTTON) 316 if (button == GLUT_RIGHT_BUTTON)
313 { 317 {
314 - float clicked[2] = {(float) x*1.0/ (float) size[0],  
315 - (float) y*1.0/ (float) size[1]};  
316 - std::cout << "clicked at " << clicked[0] << ":" << clicked[1] << std::endl;  
317 - if (clicked[0] > vertexDrw[0][0] && clicked[1] > vertexDrw[0][1])  
318 - if(clicked[0] < vertexDrw[2][0] && clicked[1] < vertexDrw[2][1])  
319 - {  
320 - std::cout << (float)x/(float)size[0]*3 << " "  
321 - << (float)y/(float)size[1]*3 << std::endl;  
322 - } 318 + std::cout << spidey.getPosition() << std::endl
  319 + << spidey.getDirection() << std::endl;
323 } 320 }
324 } 321 }
325 322
326 void MouseMotion(int x, int y) 323 void MouseMotion(int x, int y)
327 { 324 {
328 - if(button1) 325 + if(button1 && !button_shift)
329 { 326 {
330 mousePos[0] = (prevmousePos[0] - (float) x)*0.0005; 327 mousePos[0] = (prevmousePos[0] - (float) x)*0.0005;
331 mousePos[1] = ((float)y - prevmousePos[1])*0.0005; 328 mousePos[1] = ((float)y - prevmousePos[1])*0.0005;
@@ -333,6 +330,20 @@ void MouseMotion(int x, int y) @@ -333,6 +330,20 @@ void MouseMotion(int x, int y)
333 prevmousePos[1] = (float)y; 330 prevmousePos[1] = (float)y;
334 cam.OrbitFocus(mousePos[0]*degtorad, mousePos[1]*degtorad); 331 cam.OrbitFocus(mousePos[0]*degtorad, mousePos[1]*degtorad);
335 } 332 }
  333 + if(button1 && button_shift)
  334 + {
  335 + mousePos[0] = (prevmousePos[0] - (float) x)*0.00001;
  336 + mousePos[1] = ((float)y - prevmousePos[1])*0.00001;
  337 + prevmousePos[0] = (float)x;
  338 + prevmousePos[1] = (float)y;
  339 + Parker.setPosition(spidey.getPosition());
  340 + Parker.LookAt(spidey.getDirection());
  341 + Parker.Pan(mousePos[0]*degtorad);
  342 + Parker.Tilt(mousePos[1]*degtorad);
  343 + spidey.setDirection(Parker.getLookAt());
  344 + spidey.Update();
  345 + std::cout << Parker.getLookAt() << std::endl;
  346 + }
336 } 347 }
337 348
338 void 349 void
@@ -354,6 +365,13 @@ switch(key) { @@ -354,6 +365,13 @@ switch(key) {
354 else{ 365 else{
355 oriDrw[2] = oriDrw[2] + adjustDrw; 366 oriDrw[2] = oriDrw[2] + adjustDrw;
356 } 367 }
  368 + if (glutGetModifiers() == 1)
  369 + {
  370 + stim::vec<float> temp = spidey.getPosition();
  371 + temp[1] += 0.0001;
  372 + spidey.setPosition(temp);
  373 + spidey.Update();
  374 + }
357 break; 375 break;
358 case GLUT_KEY_DOWN: 376 case GLUT_KEY_DOWN:
359 oriTex[2] = oriTex[2]-adjustTex; 377 oriTex[2] = oriTex[2]-adjustTex;
@@ -363,6 +381,13 @@ switch(key) { @@ -363,6 +381,13 @@ switch(key) {
363 else{ 381 else{
364 oriDrw[2] = oriDrw[2] - adjustDrw; 382 oriDrw[2] = oriDrw[2] - adjustDrw;
365 } 383 }
  384 + if (glutGetModifiers() == 1)
  385 + {
  386 + stim::vec<float> temp = spidey.getPosition();
  387 + temp[1] -= 0.0001;
  388 + spidey.setPosition(temp);
  389 + spidey.Update();
  390 + }
366 break; 391 break;
367 case GLUT_KEY_LEFT: 392 case GLUT_KEY_LEFT:
368 oriTex[1] = oriTex[1]+adjustTex; 393 oriTex[1] = oriTex[1]+adjustTex;
@@ -372,6 +397,13 @@ switch(key) { @@ -372,6 +397,13 @@ switch(key) {
372 else{ 397 else{
373 oriDrw[1] = oriDrw[1] + adjustDrw; 398 oriDrw[1] = oriDrw[1] + adjustDrw;
374 } 399 }
  400 + if (glutGetModifiers() == 1)
  401 + {
  402 + stim::vec<float> temp = spidey.getPosition();
  403 + temp[0] += 0.0001;
  404 + spidey.setPosition(temp);
  405 + spidey.Update();
  406 + }
375 break; 407 break;
376 case GLUT_KEY_RIGHT: 408 case GLUT_KEY_RIGHT:
377 oriTex[1] = oriTex[1]-adjustTex; 409 oriTex[1] = oriTex[1]-adjustTex;
@@ -382,6 +414,13 @@ switch(key) { @@ -382,6 +414,13 @@ switch(key) {
382 oriDrw[1] = oriDrw[1] - adjustDrw; 414 oriDrw[1] = oriDrw[1] - adjustDrw;
383 } 415 }
384 break; 416 break;
  417 + if (glutGetModifiers() == 1)
  418 + {
  419 + stim::vec<float> temp = spidey.getPosition();
  420 + temp[0] -= 0.0001;
  421 + spidey.setPosition(temp);
  422 + spidey.Update();
  423 + }
385 } 424 }
386 glutPostRedisplay(); 425 glutPostRedisplay();
387 } 426 }
1 -Subproject commit 2dbd88bd02065df7f76f7bf9c3b5eca09891fbc6 1 +Subproject commit 879321c4a5e974144996aae02c44c6583e4a2fbd