home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / gfx / 3d / irit / scripts / cmorph.irt < prev    next >
Encoding:
Text File  |  1994-11-14  |  6.9 KB  |  284 lines

  1. #
  2. # A simple example of curve morphing.
  3. #
  4. #                    Gershon Elber, July 1994.
  5. #
  6.  
  7. #
  8. # Sets the viewing direction on the display device.
  9. #
  10. save_mat = view_mat;
  11. view_mat = rotx( 0 );
  12. viewobj( view_mat );
  13. view_mat = save_mat;
  14.  
  15. #############################################################################
  16. crv1 = cbezier( list( ctlpt( E2,  0.3,  0.0 ),
  17.               ctlpt( E2,  0.0,  0.5 ),
  18.               ctlpt( E2, -0.2,  0.0 ) ) );
  19. crv1a = crv1 * trans( vector( -0.4, 0.0, 0.0 ) );
  20. crv1b = crv1a * scale( vector( -1.0, 1.0, 1.0 ) );
  21. color( crv1a, green );
  22. color( crv1b, green );
  23. view( list( crv1a, crv1b ), true );
  24.  
  25. for ( i = 0, 1, 300,
  26.     c = cmorph( crv1a, crv1b, 0, i / 300.0 ):
  27.     color( c, yellow ):
  28.     viewobj( c )
  29. );
  30.  
  31. crvs = cmorph( crv1a, crv1b, 2, 0.005 );
  32. snoc( crv1b, crvs );
  33. for ( i = 1, 1, sizeof( crvs ),
  34.     c = nth( crvs, i ):
  35.     color( c, yellow ):
  36.     viewobj( c )
  37. );
  38.  
  39. crvs = cmorph( crv1a, crv1b, 4, 0.005 );
  40. snoc( crv1b, crvs );
  41. for ( i = 1, 1, sizeof( crvs ),
  42.     c = nth( crvs, i ):
  43.     color( c, yellow ):
  44.     viewobj( c )
  45. );
  46.  
  47. crvs = cmorph( crv1a, crv1b, 5, 0.003 );
  48. snoc( crv1b, crvs );
  49. for ( i = 1, 1, sizeof( crvs ),
  50.     c = nth( crvs, i ):
  51.     color( c, yellow ):
  52.     viewobj( c )
  53. );
  54.  
  55. pause();
  56. #############################################################################
  57. crv1 = cbspline( 3,
  58.          list( ctlpt( E2,  0.0,  0.0 ),
  59.                ctlpt( E2,  0.0,  0.1 ),
  60.                ctlpt( E2,  0.1,  0.1 ),
  61.                ctlpt( E2,  0.1, -0.1 ),
  62.                ctlpt( E2, -0.1, -0.1 ),
  63.                ctlpt( E2, -0.1,  0.2 ),
  64.                ctlpt( E2,  0.2,  0.2 ),
  65.                ctlpt( E2,  0.2, -0.2 ),
  66.                ctlpt( E2, -0.2, -0.2 ),
  67.                ctlpt( E2, -0.2,  0.3 ),
  68.                ctlpt( E2,  0.0,  0.3 ) ),
  69.          list( KV_OPEN ) );
  70. crv1a = crv1 * trans( vector( -0.4, 0.0, 0.0 ) );
  71. crv1b = crv1a * scale( vector( -1.0, 1.0, 1.0 ) );
  72. color( crv1a, green );
  73. color( crv1b, green );
  74. view( list( crv1a, crv1b ), true );
  75.  
  76. for ( i = 0, 1, 300,
  77.     c = cmorph( crv1a, crv1b, 0, i / 300.0 ):
  78.     color( c, yellow ):
  79.     viewobj( c )
  80. );
  81.  
  82. crvs = cmorph( crv1a, crv1b, 2, 0.01 );
  83. snoc( crv1b, crvs );
  84. for ( i = 1, 1, sizeof( crvs ),
  85.     c = nth( crvs, i ):
  86.     color( c, yellow ):
  87.     viewobj( c )
  88. );
  89.  
  90. crvs = cmorph( crv1a, crv1b, 5, 0.003 );
  91. snoc( crv1b, crvs );
  92. for ( i = 1, 1, sizeof( crvs ),
  93.     c = nth( crvs, i ):
  94.     color( c, yellow ):
  95.     viewobj( c )
  96. );
  97.  
  98. pause();
  99. #############################################################################
  100. crv1 = cbspline( 3,
  101.          list( ctlpt( E2,  0.0,  0.0 ),
  102.                ctlpt( E2,  0.0,  0.1 ),
  103.                ctlpt( E2,  0.1,  0.1 ),
  104.                ctlpt( E2,  0.1, -0.1 ),
  105.                ctlpt( E2, -0.1, -0.1 ),
  106.                ctlpt( E2, -0.1,  0.2 ),
  107.                ctlpt( E2,  0.2,  0.2 ),
  108.                ctlpt( E2,  0.2, -0.2 ),
  109.                ctlpt( E2, -0.2, -0.2 ),
  110.                ctlpt( E2, -0.2,  0.3 ),
  111.                ctlpt( E2,  0.0,  0.3 ) ),
  112.          list( KV_OPEN ) );
  113. crv1a = crv1 * trans( vector( -0.4, 0.0, 0.0 ) );
  114. crv1b = cbezier( list( ctlpt( E2, 0.3, -0.3 ),
  115.                ctlpt( E2, 0.4, 0.0 ),
  116.                ctlpt( E2, 0.3, 0.3 ) ) );
  117. color( crv1a, green );
  118. color( crv1b, green );
  119. ffcompat( crv1a, crv1b );
  120. view( list( crv1a, crv1b ), true );
  121.  
  122. for ( i = 0, 0.01, 1.0,
  123.     ( crv = cmorph( crv1a, crv1b, 0, i ) ):
  124.     color( crv, yellow ):
  125.     viewobj( crv )
  126. );
  127.  
  128. crvs = cmorph( crv1a, crv1b, 1, 0.01 );
  129. snoc( crv1b, crvs );
  130. for ( i = 1, 1, sizeof( crvs ),
  131.     c = nth( crvs, i ):
  132.     color( c, yellow ):
  133.     viewobj( c )
  134. );
  135.  
  136. crvs = cmorph( crv1a, crv1b, 3, 0.003 );
  137. snoc( crv1b, crvs );
  138. for ( i = 1, 1, sizeof( crvs ),
  139.     c = nth( crvs, i ):
  140.     color( c, yellow ):
  141.     viewobj( c )
  142. );
  143.  
  144. crvs = cmorph( crv1a, crv1b, 5, 0.003 );
  145. snoc( crv1b, crvs );
  146. for ( i = 1, 1, sizeof( crvs ),
  147.     c = nth( crvs, i ):
  148.     color( c, yellow ):
  149.     viewobj( c )
  150. );
  151.  
  152. pause();
  153. #############################################################################
  154. CrvB1 = cbspline( 3,
  155.          list( ctlpt( E2,  0.0,  0.5 ),
  156.                ctlpt( E2,  0.0, -0.48 ),
  157.                ctlpt( E2,  0.0, -0.5 ),
  158.                ctlpt( E2,  0.5, -0.5 ),
  159.                ctlpt( E2,  0.5,  0.01 ),
  160.                ctlpt( E2,  0.0,  0.02 ),
  161.                ctlpt( E2,  0.0,  0.03 ),
  162.                ctlpt( E2,  0.0,  0.04 ),
  163.                ctlpt( E2,  0.45, 0.05 ),
  164.                ctlpt( E2,  0.45, 0.5 ),
  165.                ctlpt( E2,  0.0,  0.5 ) ),
  166.          list( KV_OPEN ) );
  167. CrvB2 = cbspline( 3,
  168.          list( ctlpt( E2,  0.0,  0.5 ),
  169.                ctlpt( E2,  0.0, -0.48 ),
  170.                ctlpt( E2,  0.0, -0.5 ),
  171.                ctlpt( E2,  0.55,-0.5 ),
  172.                ctlpt( E2,  0.55, 0.01 ),
  173.                ctlpt( E2,  0.0,  0.02 ),
  174.                ctlpt( E2,  0.0,  0.03 ),
  175.                ctlpt( E2,  0.0,  0.04 ),
  176.                ctlpt( E2,  0.35, 0.05 ),
  177.                ctlpt( E2,  0.35, 0.5 ),
  178.                ctlpt( E2,  0.0,  0.5 ) ),
  179.          list( KV_OPEN ) );
  180.  
  181. crv1a = CrvB2 * trans( vector( -0.7, 0.0, 0.0 ) );
  182. crv1b = CrvB1 * trans( vector(  0.2, 0.0, 0.0 ) );
  183. color( crv1a, green );
  184. color( crv1b, green );
  185. ffcompat( crv1a, crv1b );
  186. view( list( crv1a, crv1b ), true );
  187.  
  188. for ( i = 0, 1, 300,
  189.     c = cmorph( crv1a, crv1b, 0, i / 300.0 ):
  190.     color( c, yellow ):
  191.     viewobj( c )
  192. );
  193.  
  194. crvs = cmorph( crv1a, crv1b, 2, 0.03 );
  195. snoc( crv1b, crvs );
  196. for ( i = 1, 1, sizeof( crvs ),
  197.     c = nth( crvs, i ):
  198.     color( c, yellow ):
  199.     viewobj( c )
  200. );
  201.  
  202. crvs = cmorph( crv1a, crv1b, 4, 0.1 );
  203. snoc( crv1b, crvs );
  204. for ( i = 1, 1, sizeof( crvs ),
  205.     c = nth( crvs, i ):
  206.     color( c, yellow ):
  207.     msleep(20):
  208.     viewobj( c )
  209. );
  210.  
  211. crvs = cmorph( crv1a, crv1b, 5, 0.003 );
  212. snoc( crv1b, crvs );
  213. for ( i = 1, 1, sizeof( crvs ),
  214.     c = nth( crvs, i ):
  215.     color( c, yellow ):
  216.     viewobj( c )
  217. );
  218.  
  219.  
  220. pause();
  221. #############################################################################
  222. CrvB = ctlpt( E2,  0.0,  0.5 ) +
  223.        cbspline( 3,
  224.          list( ctlpt( E2,  0.0, -0.5 ),
  225.                ctlpt( E2,  0.5, -0.5 ),
  226.                ctlpt( E2,  0.5,  0.05 ),
  227.                ctlpt( E2,  0.0,  0.05 ) ),
  228.          list( KV_OPEN ) ) +
  229.        cbspline( 3,
  230.          list( ctlpt( E2,  0.0,  0.05 ),
  231.                ctlpt( E2,  0.45, 0.05 ),
  232.                ctlpt( E2,  0.45, 0.5 ),
  233.                ctlpt( E2,  0.0,  0.5 ) ),
  234.          list( KV_OPEN ) );
  235. CrvG = cbspline( 3,
  236.          list( ctlpt( E2,  0.5,  0.1 ),
  237.                ctlpt( E2,  0.5,  0.5 ),
  238.                ctlpt( E2,  0.0,  0.5 ),
  239.                ctlpt( E2,  0.0, -0.5 ),
  240.                ctlpt( E2,  0.5, -0.5 ),
  241.                ctlpt( E2,  0.5,  0.0 ) ),
  242.          list( KV_OPEN ) ) +
  243.        ctlpt( E2,  0.25, 0.0 );
  244. crv1a = CrvG * trans( vector( -0.7, 0.0, 0.0 ) );
  245. crv1b = CrvB * trans( vector(  0.2, 0.0, 0.0 ) );
  246. color( crv1a, green );
  247. color( crv1b, green );
  248. ffcompat( crv1a, crv1b );
  249. view( list( crv1a, crv1b ), true );
  250.  
  251. for ( i = 0, 1, 300,
  252.     c = cmorph( crv1a, crv1b, 0, i / 300.0 ):
  253.     color( c, yellow ):
  254.     viewobj( c )
  255. );
  256.  
  257. crvs = cmorph( crv1a, crv1b, 2, 0.05 );
  258. snoc( crv1b, crvs );
  259. for ( i = 1, 1, sizeof( crvs ),
  260.     c = nth( crvs, i ):
  261.     color( c, yellow ):
  262.     msleep(20):
  263.     viewobj( c )
  264. );
  265.  
  266. crvs = cmorph( crv1a, crv1b, 3, 0.05 );
  267. snoc( crv1b, crvs );
  268. for ( i = 1, 1, sizeof( crvs ),
  269.     c = nth( crvs, i ):
  270.     color( c, yellow ):
  271.     msleep(20):
  272.     viewobj( c )
  273. );
  274.  
  275. crvs = cmorph( crv1a, crv1b, 5, 0.003 );
  276. snoc( crv1b, crvs );
  277. for ( i = 1, 1, sizeof( crvs ),
  278.     c = nth( crvs, i ):
  279.     color( c, yellow ):
  280.     viewobj( c )
  281. );
  282.  
  283. pause();
  284.