home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / gfx / 3d / irit / contrib / scripts / keys.irt < prev    next >
Encoding:
Text File  |  1994-04-08  |  3.6 KB  |  128 lines

  1. #Authors: Orli Gan and Ido Halevi
  2.  
  3. display = on;
  4.  
  5.  
  6. CnvrtCrvToPolygon = function( Crv, n ):ptl:pt:t:t0:t1:dt:
  7.     ptl = nil():
  8.     t0 = nth( pdomain( Crv ), 1 ):
  9.     t1 = nth( pdomain( Crv ), 2 ):
  10.     if ( n < 2, n = 2 ):
  11.     dt = (t1 - t0) / (n - 1):
  12.     for ( t = t0, dt, t1 - dt / 2,
  13.     pt = ceval( Crv, t ):
  14.     snoc( pt, ptl )
  15.     ):
  16.     return = poly( ptl, false );
  17.  
  18.  
  19. key_bsp = list( ctlpt( E3 , 0.116 ,  0.296 ,     0.0),
  20.              ctlpt( E3 , 0.172 ,    0.7 ,     0.0),
  21.              ctlpt( E3 ,-0.292 ,  0.928 ,     0.0),
  22.              ctlpt( E3 , -0.66 ,   0.66 ,     0.0),
  23.              ctlpt( E3 ,-0.572 ,  0.244 ,     0.0),
  24.              ctlpt( E3 ,-0.316 ,   0.06 ,     0.0),
  25.              ctlpt( E3 ,-0.324 ,  0.068 ,     0.0),
  26.              ctlpt( E3 ,-0.296 , -0.208 ,     0.0),
  27.              ctlpt( E3 ,-0.236 , -0.812 ,     0.0),
  28.              ctlpt( E3 ,-0.228 ,  -0.82 ,     0.0),
  29.              ctlpt( E3 ,-0.172 , -0.872 ,     0.0),
  30.              ctlpt( E3 , -0.02 , -0.764 ,     0.0),
  31.              ctlpt( E3 ,-0.028 ,  -0.76 ,     0.0),
  32.              ctlpt( E3 ,-0.036 , -0.692 ,     0.0),
  33.              ctlpt( E3 ,-0.076 , -0.668 ,     0.0),
  34.              ctlpt( E3 , -0.02 ,  -0.62 ,     0.0),
  35.              ctlpt( E3 ,-0.076 , -0.556 ,     0.0),
  36.              ctlpt( E3 ,-0.036 , -0.476 ,     0.0),
  37.              ctlpt( E3 ,-0.104 , -0.412 ,     0.0),
  38.              ctlpt( E3 ,-0.052 , -0.332 ,     0.0),
  39.              ctlpt( E3 , -0.08 , -0.276 ,     0.0),
  40.              ctlpt( E3 ,-0.044 ,  -0.24 ,     0.0),
  41.              ctlpt( E3 , -0.12 ,  -0.14 ,     0.0),
  42.              ctlpt( E3 ,-0.068 , -0.072 ,     0.0),
  43.              ctlpt( E3 ,-0.072 , -0.004 ,     0.0),
  44.              ctlpt( E3 , 0.008 ,  0.004 ,     0.0),
  45.              ctlpt( E3 ,-0.072 ,  0.084 ,     0.0),
  46.              ctlpt( E3 ,-0.056 ,    0.1 ,     0.0),
  47.              ctlpt( E3 , 0.028 ,   0.16 ,     0.0),
  48.              ctlpt( E3 , 0.116 ,  0.292 ,     0.0));
  49.  
  50. key_cb = cbspline( 3, key_bsp, list( KV_OPEN ));
  51.  
  52. free(key_bsp);
  53.  
  54. drawctlpt = 0;
  55.  
  56. key_poly = CnvrtCrvToPolygon( key_cb, 100 );
  57.  
  58. ext_dir = vector( 0.0, 0.0, 0.1);
  59.  
  60. key1 = extrude (key_poly, ext_dir);
  61.  
  62. hole = cylin (vector(-0.27,0.67,0.0), ext_dir*3, 0.1);
  63.  
  64. key2 = key1 - hole;
  65.  
  66. free (key1);
  67.  
  68. elipse_bsp = list (ctlpt (E3,-0.235869, 0.0,  0.254282),
  69.                 ctlpt (E3, -0.234916, 0.0,  0.175189),
  70.                 ctlpt (E3, -0.124377, 0.0,  0.174236),
  71.                 ctlpt (E3, -0.122471, 0.0,  0.328611),
  72.                 ctlpt (E3, -0.235869, 0.0,  0.330517),
  73.                 ctlpt (E3, -0.235869, 0.0,  0.254282));
  74.  
  75. elipse_cb = cbspline( 3, elipse_bsp, list( KV_OPEN ));
  76.  
  77. free(elipse_bsp);
  78.  
  79. elipse_poly = CnvrtCrvToPolygon( elipse_cb, 50 );
  80.  
  81. cyl = extrude (elipse_poly, vector(0.0, 1.3, 0.0)) * 
  82.       scale (vector(0.6, 0.7, 0.7));
  83.  
  84. cyl_mat1 = rotz(6) * trans (vector(-0.06, -0.85, -0.08));
  85. cyl1 = cyl_mat1 * cyl;
  86.  
  87. cyl_mat2 = rotz(6) * trans (vector(-0.0, -0.84, -0.185));
  88. cyl2 = cyl_mat2 * cyl;
  89.  
  90. cyl_mat3 = rotz(6) * trans (vector(0.07, -0.83, -0.08));
  91. cyl3 = cyl_mat3 * cyl;
  92.  
  93. key3 = key2 - cyl1 - cyl2 - cyl3;
  94.  
  95. free (cyl1);
  96. free (cyl2);
  97. free (cyl3);
  98.  
  99. key4 = key3 * trans (vector (0.0, -0.13, 0.0));
  100.  
  101. key5 = key3 * rotz (20) * trans (vector (0.18, -0.03, 0.11));
  102.  
  103. key6 = key3 * rotz (-15) * trans (vector (-0.2, -0.13, -0.12));
  104.  
  105. cir = circle(vector(0.0, 0.0, 0.0), 0.35);
  106.  
  107. loop = sweepsrf (circle(vector(0.0, 0.0, 0.0), 0.03),
  108.             cir, off) *
  109.        roty(90) * rotz (-40) * trans (vector (-0.09, 0.8, 0.05));
  110.  
  111. view_mat = trans(vector(0.0, 0.0, 0.0));
  112.  
  113. view (list (view_mat,loop, key4, key5, key6), true);
  114.  
  115. key4_final = convex (key4);
  116. key5_final = convex (key5);
  117. key6_final = convex (key6);
  118.  
  119. save ("keys", list (key4_final, key5_final, key6_final, loop));
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.