home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Homebrewer's Handbook / vr.iso / avril / example5.c < prev    next >
C/C++ Source or Header  |  1996-03-19  |  2KB  |  54 lines

  1. /* EXAMPLE5 -- manipulating a cube with the Logitech Cyberman */
  2.  
  3. /* Written by Bernie Roehl, August 1994 */
  4.  
  5. #include "avril.h"
  6. #include "avrildrv.h"
  7.  
  8. vrl_Object *cube = NULL;
  9.  
  10. static void cube_mover(void)
  11.     {
  12.     vrl_Device *dev = vrl_TaskGetData();
  13.     vrl_Object *viewer = vrl_CameraGetObject(vrl_WorldGetCamera());
  14.     vrl_Vector v;
  15.     vrl_ObjectRotate(cube, vrl_DeviceGetValue(dev, YROT), Y, VRL_COORD_OBJREL, viewer);
  16.     vrl_ObjectRotate(cube, vrl_DeviceGetValue(dev, XROT), X, VRL_COORD_OBJREL, viewer);
  17.     vrl_ObjectRotate(cube, vrl_DeviceGetValue(dev, ZROT), Z, VRL_COORD_OBJREL, viewer);
  18.     vrl_VectorCreate(v, vrl_DeviceGetValue(dev, X), vrl_DeviceGetValue(dev, Y), vrl_DeviceGetValue(dev, Z));
  19.     vrl_ObjectTranslate(cube, v, VRL_COORD_OBJREL, viewer);
  20.     vrl_SystemRequestRefresh();
  21.     }
  22.  
  23. void main()
  24.     {
  25.     vrl_Light *light;
  26.     vrl_Camera *camera;
  27.     vrl_Device *dev;
  28.  
  29.     vrl_SystemStartup();
  30.  
  31.     cube = vrl_ObjectCreate(vrl_PrimitiveBox(100, 100, 100, NULL));
  32.     vrl_ObjectRotY(cube, float2angle(45));
  33.  
  34.     light = vrl_LightCreate();
  35.     vrl_LightRotY(light, float2angle(45));
  36.     vrl_LightRotX(light, float2angle(45));
  37.  
  38.     camera = vrl_CameraCreate();
  39.     vrl_CameraRotX(camera, float2angle(45));
  40.     vrl_CameraMove(camera, 0, 500, -500);
  41.  
  42.     dev = vrl_DeviceOpen(vrl_CybermanDevice, vrl_SerialOpen(0x2F8, 3, 2000));
  43.     if (dev)
  44.         {
  45.         vrl_DeviceSetScale(dev, X, float2scalar(50));
  46.         vrl_DeviceSetScale(dev, Y, float2scalar(50));
  47.         vrl_DeviceSetScale(dev, Z, float2scalar(50));
  48.         vrl_TaskCreate(cube_mover, dev, 0);
  49.         }
  50.  
  51.     vrl_SystemRun();
  52.     }
  53.  
  54.