Ignore:
Timestamp:
May 30, 2008, 1:33:31 PM (16 years ago)
Author:
jack
Message:

Added 'h' to warp the camera back home.

Location:
anuga_work/development/anugavis/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • anuga_work/development/anugavis/src/camera.c

    r5380 r5385  
    1414
    1515static const vector up = {0.0, 0.0, 1.0};
     16
     17void 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}
    1628
    1729void camera_pitch(float theta){
     
    5062}
    5163
     64void 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
     74void 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
    5283void camera_yaw(float theta){
    5384  float c = cos(theta);
     
    6293}
    6394
    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 
    8395void camera_zoom(float dist){
    8496  vector releye;
  • anuga_work/development/anugavis/src/camera.h

    r5384 r5385  
    99#define CAMERA_ZOOM_STEP 0.025
    1010
     11extern void camera_home(void);
    1112extern void camera_pitch(float theta);
     13extern void camera_strafe(float dist);
     14extern void camera_track(float dist);
    1215extern void camera_yaw(float theta);
    13 extern void camera_track(float dist);
    14 extern void camera_strafe(float dist);
    1516extern void camera_zoom(float dist);
    1617
  • anuga_work/development/anugavis/src/events.c

    r5384 r5385  
    5555                                     - 1);
    5656        break;
     57      case SDLK_h: camera_home(); break;
    5758      case SDLK_ESCAPE: more = 0; break;
    5859      case SDLK_UP: anugavis.keys[KEY_PITCH_UP] = 1; break;
  • anuga_work/development/anugavis/src/init.c

    r5384 r5385  
    1818#include <netcdf.h>
    1919#include <SDL.h>
     20#include "camera.h"
    2021#include "error.h"
    2122#include "globals.h"
     
    2728int AnugaVis_Init(int width, int height, const char *swwFilePath){
    2829  int ncstatus;
    29   vector releye;
    3030  unsigned int i;
    3131  GLfloat lightAmbient[] = {0.0, 0.0, 0.0, 1.0};
     
    103103    anugavis.maxY = MAX(anugavis.maxY, anugavis.y[i]);
    104104  }
    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);
    113105  anugavis.diagonal = sqrt((anugavis.maxX - anugavis.minX) *
    114106                           (anugavis.maxX - anugavis.minX) +
    115107                           (anugavis.maxY - anugavis.minY) *
    116108                           (anugavis.maxY - anugavis.minY));
     109  camera_home();
    117110  return 0;
    118111}
Note: See TracChangeset for help on using the changeset viewer.