home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / graphic / irit / wheel.irt < prev   
Text File  |  1991-09-04  |  1KB  |  72 lines

  1. #
  2. # A teeth wheel:
  3. #                        Gershon Elber, Apr 89
  4. #
  5.  
  6. tm = time(true);
  7.  
  8. save_mat = view_mat;
  9. save_res = resolution;
  10.  
  11. # Number of samples per circle:
  12. resolution = 8;
  13.  
  14. # Note angle must be power of 2 as we multiply it by 2 each iteration, and
  15. # angle_log should hold the base 2 log of the divider in angle: log2 16 = 4.
  16. angle = 360/16;
  17. angle_log = 4; 
  18.  
  19. C = cylin(vector( 0.6, 0.0, -0.1), vector( 0.0, 0.0, 0.3), 0.1);
  20. view(list(C,axes), true);
  21.  
  22. for ((i=1), 1, angle_log,
  23.     (C = C + C * rotz(angle)):
  24.     (angle = angle * 2):
  25.     view(list(C,axes), true)
  26. );
  27.  
  28. #
  29. # Now lets create the wheel, make a hole in it to make it looks more real,
  30. # and subtract all the teeth from it:
  31. #
  32.  
  33. resolution = 32;
  34. wheel = cylin(vector( 0.0, 0.0, 0.0), vector( 0.0, 0.0, 0.08), 0.6);
  35. beep(1200,200);
  36.  
  37. resolution = 16;
  38. H1 = CYLIN(vector( 0.0, 0.0, -0.1), vector( 0.0, 0.0, 0.3), 0.1);
  39. H2 = BOX(vector( -0.2, -0.05,-0.1), 0.4, 0.1, 0.3);
  40. H = H1 + H2;
  41. free(H1);
  42. free(H2);
  43.  
  44. beep(1200,200);
  45. view(list(wheel,H), true);
  46. wheel = wheel - H;
  47. free(H);
  48.  
  49. wheel = convex(wheel);
  50. beep(1200,200);
  51. interact(list(wheel), false);
  52.  
  53. wheel = wheel - C;
  54. free(C);
  55. beep(1200,200);
  56. interact(list(wheel), false);
  57.  
  58. final = convex(wheel);
  59. free(wheel);
  60.  
  61. tm = time(false);
  62. tm; # In Seconds
  63.  
  64. beep(1200,200);
  65. interact(list(final), false);
  66.  
  67. save("wheel", list(view_mat,final));
  68. free(final);
  69.  
  70. resolution = save_res;
  71. view_mat = save_mat;
  72.