home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Homebrewer's Handbook / vr.iso / vroom / hand.pas < prev    next >
Pascal/Delphi Source File  |  1996-03-19  |  5KB  |  178 lines

  1. program test;
  2.  
  3. uses vroom,crt, fix_math;
  4.  
  5. var thumbtop, thumbbot : file_object3d;
  6.     fing1bot, fing1mid, fing1top : file_object3d;
  7.     fing2bot, fing2mid, fing2top : file_object3d;
  8.     fing3bot, fing3mid, fing3top : file_object3d;
  9.     fing4bot, fing4mid, fing4top : file_object3d;
  10.     palm : file_object3d;
  11.  
  12.     c,c1 : integer;
  13.     tv : face_vertex_ptr;
  14.     tf : face_ptr;
  15.     ch : char;
  16.     ok : boolean;
  17. begin
  18.      Init_System;
  19.  
  20.      Set_Ambient_Intensity(0.5);
  21.      Set_Light(0.75,0,-1,-0.75);
  22.  
  23.      thumbbot.Init('hex1.3d');
  24.      thumbtop.Init('hex1.3d');
  25.      fing1top.Init('hex1.3d');
  26.      fing1mid.Init('hex1.3d');
  27.      fing1bot.Init('hex1.3d');
  28.      fing2top.Init('hex1.3d');
  29.      fing2mid.Init('hex1.3d');
  30.      fing2bot.Init('hex1.3d');
  31.      fing3top.Init('hex1.3d');
  32.      fing3mid.Init('hex1.3d');
  33.      fing3bot.Init('hex1.3d');
  34.      fing4top.Init('hex1.3d');
  35.      fing4mid.Init('hex1.3d');
  36.      fing4bot.Init('hex1.3d');
  37.      palm.Init('palm.3d');
  38.  
  39.      palm.addchild(@thumbbot);
  40.      palm.addchild(@fing1bot);
  41.      palm.addchild(@fing2bot);
  42.      palm.addchild(@fing3bot);
  43.      palm.addchild(@fing4bot);
  44.      palm.Set_Reference_Point(-11.75,40,0);
  45.  
  46.      thumbbot.addchild(@thumbtop);
  47.      fing1bot.addchild(@fing1mid);
  48.      fing1mid.addchild(@fing1top);
  49.      fing2bot.addchild(@fing2mid);
  50.      fing2mid.addchild(@fing2top);
  51.      fing3bot.addchild(@fing3mid);
  52.      fing3mid.addchild(@fing3top);
  53.      fing4bot.addchild(@fing4mid);
  54.      fing4mid.addchild(@fing4top);
  55.  
  56.      thumbbot.translate(2.6,15,0);
  57.      thumbtop.translate(0,-15,0);
  58.      thumbbot.RotateZ(5);
  59.      fing1bot.translate(-2.6,0,0);
  60.      fing1mid.translate(0,-15,0);
  61.      fing1top.translate(0,-15,0);
  62.      fing2bot.translate(-7.6,0,0);
  63.      fing2mid.translate(0,-15,0);
  64.      fing2top.translate(0,-15,0);
  65.      fing3bot.translate(-13.6,0,0);
  66.      fing3mid.translate(0,-15,0);
  67.      fing3top.translate(0,-15,0);
  68.      fing4bot.translate(-18.6,0,0);
  69.      fing4mid.translate(0,-15,0);
  70.      fing4top.translate(0,-15,0);
  71.      fing1top.Scale_About(1,0.75,1,fixed_to_real(fing1top.reference_point.x),-23,0);
  72.      fing2top.Scale_About(1,0.75,1,fixed_to_real(fing2top.reference_point.x),-23,0);
  73.      fing3top.Scale_About(1,0.75,1,fixed_to_real(fing3top.reference_point.x),-23,0);
  74.      fing4top.Scale_About(1,0.75,1,fixed_to_real(fing4top.reference_point.x),-23,0);
  75.      fing1bot.Scale_About(1,0.9,1,fixed_to_real(fing1bot.reference_point.x),7,0);
  76.      fing3bot.Scale_About(1,0.9,1,fixed_to_real(fing3bot.reference_point.x),7,0);
  77.      fing4bot.Scale_About(1,0.75,1,fixed_to_real(fing4bot.reference_point.x),7,0);
  78.  
  79.  
  80.      Set_View(600,5,0,0,0,0);
  81.      Set_Window(-20,-15,20,15);
  82.  
  83.      Redraw_Scene;
  84.      for c1:=1 to 3 do
  85.      begin
  86.      for c:=1 to 15 do
  87.      begin
  88.           fing1bot.RotateX(5);
  89.           fing2bot.RotateX(5);
  90.           fing3bot.RotateX(5);
  91.           fing4bot.RotateX(5);
  92.  
  93.           fing1mid.RotateX(5);
  94.           fing2mid.RotateX(5);
  95.           fing3mid.RotateX(5);
  96.           fing4mid.RotateX(5);
  97.  
  98.           fing1top.RotateX(5);
  99.           fing2top.RotateX(5);
  100.           fing3top.RotateX(5);
  101.           fing4top.RotateX(5);
  102.  
  103.           thumbbot.RotateX(5);
  104.           thumbtop.RotateZ(-5);
  105.  
  106.           redraw_scene;
  107.      end;
  108.  
  109.      delay(500);
  110.  
  111.      for c:=1 to 15 do
  112.      begin
  113.           fing1bot.RotateX(-5);
  114.           fing2bot.RotateX(-5);
  115.           fing3bot.RotateX(-5);
  116.           fing4bot.RotateX(-5);
  117.  
  118.           fing1mid.RotateX(-5);
  119.           fing2mid.RotateX(-5);
  120.           fing3mid.RotateX(-5);
  121.           fing4mid.RotateX(-5);
  122.  
  123.           fing1top.RotateX(-5);
  124.           fing2top.RotateX(-5);
  125.           fing3top.RotateX(-5);
  126.           fing4top.RotateX(-5);
  127.  
  128.           thumbtop.RotateZ(5);
  129.           thumbbot.RotateX(-5);
  130.  
  131.           redraw_scene;
  132.      end;
  133.      delay(500);
  134.      end;
  135.  
  136.      for c:=1 to 15 do
  137.      begin
  138.           fing1bot.RotateX(5);
  139.           fing2bot.RotateX(5);
  140.           fing3bot.RotateX(5);
  141.           fing4bot.RotateX(5);
  142.  
  143.           fing1mid.RotateX(5);
  144.           fing2mid.RotateX(5);
  145.           fing3mid.RotateX(5);
  146.           fing4mid.RotateX(5);
  147.  
  148.           fing1top.RotateX(5);
  149.           fing2top.RotateX(5);
  150.           fing3top.RotateX(5);
  151.           fing4top.RotateX(5);
  152.  
  153.           thumbbot.RotateX(5);
  154.           thumbtop.RotateZ(-5);
  155.  
  156.           redraw_scene;
  157.      end;
  158.  
  159.      repeat
  160.            ch:=ReadKey;
  161.            ok:=true;
  162.            case ch of
  163.                 '8': palm.RotateY(-10);
  164.                 '2': palm.RotateY(10);
  165.                 '4': palm.RotateZ(-10);
  166.                 '6': palm.RotateZ(10);
  167.                 '1': palm.RotateX(10);
  168.                 '3': palm.RotateX(-10);
  169.                 'p': send_screen_to_pcx('hand.pcx');
  170.            else
  171.                ok:=false;
  172.            end;
  173.            if ok then
  174.            redraw_scene;
  175.      until ch='q';
  176.  
  177.      stop_graphics;
  178. end.