#include #include #include #include #include #include "paulslib.h" #include "opengllib.h" #include "bitmaplib.h" /* Great circle interactive for Sarah */ void Display(void); void CreateEnvironment(void); void MakeGeometry(void); void MakeLighting(void); void HandleKeyboard(unsigned char key,int x, int y); void HandleSpecialKeyboard(int key,int x, int y); void HandleMouse(int,int,int,int); void HandleMainMenu(int); void HandlePlaneMenu(int); void HandleSphereMenu(int); void HandleSpinMenu(int); void HandleSpeedMenu(int); void HandleVisibility(int vis); void HandleReshape(int,int); void HandleMouseMotion(int,int); void HandlePassiveMotion(int,int); void HandleIdle(void); void GiveUsage(char *); void RotateCamera(int,int,int); void TranslateCamera(int,int); void CameraHome(int); typedef struct { XYZ vp; /* View position */ XYZ vd; /* View direction vector */ XYZ vu; /* View up direction */ XYZ pr; /* Point to rotate about */ double focallength; /* Focal Length along vd */ double aperture; /* Camera aperture */ double eyesep; /* Eye separation */ int screenwidth,screenheight; } CAMERA; /* Flags */ int fullscreen = FALSE; int stereo = FALSE; int showconstruct = FALSE; int showobject = 0; int windowdump = FALSE; int planetype = 1; int spheretype = 1; int lineset = 1; int autospin = 0; int currentbutton = -1; double rotatespeed = 1; double dtheta = 1; CAMERA camera; XYZ origin = {0.0,0.0,0.0}; double anglex=0,angley=0,anglez=0; GLfloat specularcolour[4] = {1.0,1.0,1.0,1.0}; GLfloat shininess[1] = {20.0}; int main(int argc,char **argv) { int i; int mainmenu,spinmenu,planemenu,spheremenu; /* Parse the command line arguments */ for (i=1;i 0) dx = 1; if (dy < 0) dy = -1; else if (dy > 0) dy = 1; if (currentbutton == GLUT_LEFT_BUTTON) { RotateCamera(-dx,dy,0); } else if (currentbutton == GLUT_MIDDLE_BUTTON) { RotateCamera(0,0,dx); } xlast = x; ylast = y; } #include "/usr/users/pbourke/include/paulslib.c" #include "/usr/users/pbourke/include/opengllib.c" #include "/usr/users/pbourke/include/bitmaplib.c"