Changeset 5385
- Timestamp:
- May 30, 2008, 1:33:31 PM (17 years ago)
- Location:
- anuga_work/development/anugavis/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_work/development/anugavis/src/camera.c
r5380 r5385 14 14 15 15 static const vector up = {0.0, 0.0, 1.0}; 16 17 void camera_home(void){ 18 vector releye; 19 anugavis.eye[0] = anugavis.minX; 20 anugavis.eye[1] = anugavis.minY; 21 anugavis.eye[2] = 0; 22 anugavis.focus[0] = anugavis.minX + (anugavis.maxX - anugavis.minX) / 2; 23 anugavis.focus[1] = anugavis.minY + (anugavis.maxY - anugavis.minY) / 2; 24 anugavis.focus[2] = 0; 25 vsub(anugavis.eye, anugavis.focus, releye); 26 anugavis.eye[2] = vlen(releye); 27 } 16 28 17 29 void camera_pitch(float theta){ … … 50 62 } 51 63 64 void camera_strafe(float dist){ 65 vector releye; 66 vector dir; 67 vsub(anugavis.eye, anugavis.focus, releye); 68 vcross(releye, up, dir); 69 vscale(dir, dist/vlen(dir), dir); 70 vadd(anugavis.eye, dir, anugavis.eye); 71 vadd(anugavis.focus, dir, anugavis.focus); 72 } 73 74 void camera_track(float dist){ 75 vector dir = {0, 0, 0}; 76 vsub(anugavis.eye, anugavis.focus, dir); 77 dir[2] = 0; 78 vscale(dir, dist/vlen(dir), dir); 79 vadd(anugavis.eye, dir, anugavis.eye); 80 vadd(anugavis.focus, dir, anugavis.focus); 81 } 82 52 83 void camera_yaw(float theta){ 53 84 float c = cos(theta); … … 62 93 } 63 94 64 void camera_track(float dist){65 vector dir = {0, 0, 0};66 vsub(anugavis.eye, anugavis.focus, dir);67 dir[2] = 0;68 vscale(dir, dist/vlen(dir), dir);69 vadd(anugavis.eye, dir, anugavis.eye);70 vadd(anugavis.focus, dir, anugavis.focus);71 }72 73 void camera_strafe(float dist){74 vector releye;75 vector dir;76 vsub(anugavis.eye, anugavis.focus, releye);77 vcross(releye, up, dir);78 vscale(dir, dist/vlen(dir), dir);79 vadd(anugavis.eye, dir, anugavis.eye);80 vadd(anugavis.focus, dir, anugavis.focus);81 }82 83 95 void camera_zoom(float dist){ 84 96 vector releye; -
anuga_work/development/anugavis/src/camera.h
r5384 r5385 9 9 #define CAMERA_ZOOM_STEP 0.025 10 10 11 extern void camera_home(void); 11 12 extern void camera_pitch(float theta); 13 extern void camera_strafe(float dist); 14 extern void camera_track(float dist); 12 15 extern void camera_yaw(float theta); 13 extern void camera_track(float dist);14 extern void camera_strafe(float dist);15 16 extern void camera_zoom(float dist); 16 17 -
anuga_work/development/anugavis/src/events.c
r5384 r5385 55 55 - 1); 56 56 break; 57 case SDLK_h: camera_home(); break; 57 58 case SDLK_ESCAPE: more = 0; break; 58 59 case SDLK_UP: anugavis.keys[KEY_PITCH_UP] = 1; break; -
anuga_work/development/anugavis/src/init.c
r5384 r5385 18 18 #include <netcdf.h> 19 19 #include <SDL.h> 20 #include "camera.h" 20 21 #include "error.h" 21 22 #include "globals.h" … … 27 28 int AnugaVis_Init(int width, int height, const char *swwFilePath){ 28 29 int ncstatus; 29 vector releye;30 30 unsigned int i; 31 31 GLfloat lightAmbient[] = {0.0, 0.0, 0.0, 1.0}; … … 103 103 anugavis.maxY = MAX(anugavis.maxY, anugavis.y[i]); 104 104 } 105 anugavis.eye[0] = anugavis.minX;106 anugavis.eye[1] = anugavis.minY;107 anugavis.eye[2] = 0;108 anugavis.focus[0] = anugavis.minX + (anugavis.maxX - anugavis.minX) / 2;109 anugavis.focus[1] = anugavis.minY + (anugavis.maxY - anugavis.minY) / 2;110 anugavis.focus[2] = 0;111 vsub(anugavis.eye, anugavis.focus, releye);112 anugavis.eye[2] = vlen(releye);113 105 anugavis.diagonal = sqrt((anugavis.maxX - anugavis.minX) * 114 106 (anugavis.maxX - anugavis.minX) + 115 107 (anugavis.maxY - anugavis.minY) * 116 108 (anugavis.maxY - anugavis.minY)); 109 camera_home(); 117 110 return 0; 118 111 }
Note: See TracChangeset
for help on using the changeset viewer.