home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / gfx / 3d / irit / scripts / b58.irt < prev    next >
Encoding:
Text File  |  1995-01-09  |  14.8 KB  |  467 lines

  1. #
  2. # A model of the B58 Bomber.
  3. #
  4. #
  5. #            Gershon Elber, October 1991.
  6. #
  7.  
  8. if ( machine == msdos, resolution = 8, resolution = 10 );
  9.  
  10. save_mat = view_mat;
  11. view_mat = view_mat
  12.            * trans( vector( 5.0, 2.0, 0.0 ) )
  13.        * scale( vector( 0.15, 0.15, 0.15 ) );
  14.  
  15. #
  16. # Set up for colored or wood texture version. set do_texture to 1 for
  17. # wood version, otherwise color version. Note locally (in irit) it will
  18. # always be displayed in colors.
  19. #
  20. do_texture = 0;
  21.  
  22. if ( do_texture == 1,
  23.  
  24.      woodcolor = "244,164,96":
  25.      texture = "wood":
  26.      redcolor = woodcolor:
  27.      graycolor = woodcolor:
  28.      whitecolor = woodcolor:
  29.      blackcolor = woodcolor,
  30.  
  31.      redcolor = "255,0,0":
  32.      graycolor = "70,70,70":
  33.      whitecolor = "255,255,255":
  34.      blackcolor = "10,10,10" );
  35.  
  36. #
  37. # First Lets create the fuselage.
  38. #
  39.  
  40. #
  41. # Front part of the fuselage:
  42. #
  43. c1 = circle( vector( 0.0, 0.0, 0.0 ), 0.01 ) *
  44.      roty( 90 ) *
  45.      trans( vector( -1.0, 0.0, 0.1 ) );
  46. color( c1, green );
  47. c2 = circle( vector( 0.0, 0.0, 0.0 ), 0.025 ) *
  48.      roty( 90 ) *
  49.      trans( vector( 0.0, 0.0, 0.1 ) );
  50. color( c2, green );
  51. c3 = circle( vector( 0.0, 0.0, 0.0 ), 0.03 ) *
  52.      roty( 90 ) *
  53.      trans( vector( 0.1, 0.0, 0.1 ) );
  54. color( c3, green );
  55. c4 = cbspline( 3,
  56.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  57.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  58.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  59.              ctlpt( P3, 0.707, 1.77,  0.283,  0.283 ),
  60.              ctlpt( P3, 1,     2.5,   0.0,    0.4 ),
  61.              ctlpt( P3, 0.707, 1.77, -0.283,  0.283 ),
  62.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  63.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  64.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  65.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  66.      trans( vector( -1.5, 0.0, 0.0 ) );
  67. color( c4, green );
  68. c5 = cbspline( 3,
  69.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  70.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  71.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  72.              ctlpt( P3, 0.707, 1.77,  0.283,  0.6 ),
  73.              ctlpt( P3, 1,     2.5,   0.0,    0.5 ),
  74.              ctlpt( P3, 0.707, 1.77, -0.283,  0.6 ),
  75.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  76.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  77.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  78.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  79.      trans( vector( 0.0, 0.0, 0.0 ) );
  80. color( c5, green );
  81.  
  82. fuseFront = sFromCrvs( list( c1, c2, c3, c4, c5 ), 3 );
  83. if ( do_texture == 1, attrib( fuseFront, "texture", texture ) );
  84. attrib( fuseFront, "rgb", blackcolor );
  85. color( fuseFront, yellow );
  86.  
  87. #
  88. # Back part of the fuselage:
  89. #
  90. c1 = cbspline( 3,
  91.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  92.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  93.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  94.              ctlpt( P3, 0.707, 1.77,  0.283,  0.566 ),
  95.              ctlpt( P3, 1,     2.5,   0.0,    0.8 ),
  96.              ctlpt( P3, 0.707, 1.77, -0.283,  0.566 ),
  97.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  98.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  99.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  100.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  101.      trans( vector( 0.0, 0.0, 0.0 ) );
  102. color( c1, red );
  103. c2 = c1 * scale( vector( 1.05, 1.05, 1.05 ) ) *
  104.           trans( vector( 0.3, 0.0, 0.0 ) );
  105. color( c2, red );
  106. c3 = c1 * scale( vector( 0.95, 0.95, 0.95 ) ) *
  107.       trans( vector( 1.7, 0.0, -0.02 ) );
  108. color( c3, red );
  109. c4 = circle( vector( 0.0, 0.0, 0.0 ), 0.35 ) *
  110.      roty( 90 ) *
  111.      trans( vector( 5.0, 0.0, 0.2 ) );
  112. color( c4, red );
  113. c5 = c4 * trans( vector( 0.2, 0.0, 0.0 ) );
  114. color( c5, red );
  115. c6 = circle( vector( 0.0, 0.0, 0.0 ), 0.3 ) *
  116.      roty( 90 ) *
  117.      trans( vector( 10.5, 0.0, 0.2 ) );
  118. color( c6, red );
  119. c7 = circle( vector( 0.0, 0.0, 0.0 ), 0.01 ) *
  120.      roty( 90 ) *
  121.      trans( vector( 11.0, 0.0, 0.25 ) );
  122. color( c7, red );
  123.  
  124. fuseBack = sFromCrvs( list( c1, c2, c3, c4, c5, c6, c7 ), 3 );
  125. if ( do_texture == 1, attrib( fuseBack, "texture", texture ) );
  126. attrib( fuseBack, "rgb", graycolor );
  127. color( fuseBack, white );
  128.  
  129. #
  130. # The cockpit:
  131. #
  132. cock1 = cregion( c1, 1.3, 2.7 );
  133. color( cock1, yellow );
  134. cock2 = cock1 * scale( vector( 0.9, 0.9, 1.1 ) ) *
  135.             trans( vector( -0.35, 0.0, -0.15 ) );
  136. color( cock2, yellow );
  137. cock3 = cock1 * scale( vector( 0.01, 0.01, 0.01 ) ) *
  138.             trans( vector( 1.4, 0.0, 0.38 ) );
  139. color( cock3, yellow );
  140.  
  141. cockpit = sFromCrvs( list( cock3, cock2, cock1 ), 3 );
  142. if ( do_texture == 1, attrib( cockpit, "texture", texture ) );
  143. attrib( cockpit, "rgb", whitecolor );
  144. color( cockpit, white );
  145.  
  146. free( cock1 ); free( cock2 ); free( cock3 );
  147. free( c1 ); free( c2 ); free( c3 ); free( c4 );
  148. free( c5 ); free( c6 ); free( c7 );
  149.  
  150. #
  151. # Now create the steering (vertical) tail.
  152. #
  153. c1 = ( cbspline( 3,
  154.              list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  155.                ctlpt( E3, 0.0,  0.02, 0.0 ),
  156.                ctlpt( E3, 1.5,  0.07, 0.0 ),
  157.                ctlpt( E3, 3.0,  0.0,  0.0 ) ),
  158.              list( KV_OPEN ) ) +
  159.        cbspline( 3,
  160.              list( ctlpt( E3, 3.0,  0.0, 0.0 ),
  161.                ctlpt( E3, 1.5, -0.07, 0.0 ),
  162.                ctlpt( E3, 0.0, -0.02, 0.0 ),
  163.                ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  164.              list( KV_OPEN ) ) ) *
  165.      trans( vector( 7.7, 0.0, 0.3 ) );
  166. c2 = c1 * scale( vector( 0.65, 0.65, 0.65 ) )
  167.     * trans( vector( 3.75, 0.0, 0.4 ) );
  168. c3 = c1 * scale( vector( 0.16, 0.16, 0.16 ) )
  169.     * trans( vector( 9.5, 0.0, 2.0 ) );
  170. vTail1 = ruledsrf( c1, c2 );
  171. vTail2 = ruledsrf( c2, c3 );
  172. if ( do_texture == 1, attrib( vTail1, "texture", texture ) );
  173. attrib( vTail1, "rgb", redcolor );
  174. color( vTail1, red );
  175. if ( do_texture == 1, attrib( vTail2, "texture", texture ) );
  176. attrib( vTail2, "rgb", redcolor );
  177. color( vTail2, red );
  178.  
  179. vTailTop = swpsclsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.1 ),
  180.               cbezier( list( ctlpt( E3, 10.732, 0.0, 2.048 ),
  181.                      ctlpt( E3, 10.972, 0.0, 2.048 ),
  182.                      ctlpt( E3, 11.212, 0.0, 2.048 ) ) ),
  183.               cbezier( list( ctlpt( E2, 0.0, 0.01 ),
  184.                      ctlpt( E2, 0.5, 1.0 ),
  185.                      ctlpt( E2, 1.0, 0.01 ) ) ),
  186.              off, 1 );
  187. if ( do_texture == 1, attrib( vTailTop, "texture", texture ) );
  188. attrib( vTailTop, "rgb", redcolor );
  189. color( vTailTop, red );
  190.  
  191. vTailPara = swpsclsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.075 ),
  192.                cbspline( 3,
  193.                   list( ctlpt( E3, 9.15,  0.0, 0.6 ),
  194.                        ctlpt( E3, 9.5,   0.0, 0.6 ),
  195.                        ctlpt( E3, 9.9,   0.0, 0.6 ),
  196.                        ctlpt( E3, 10.7,  0.0, 0.6 ),
  197.                        ctlpt( E3, 10.8,  0.0, 0.6 ),
  198.                        ctlpt( E3, 10.85, 0.0, 0.6 ),
  199.                        ctlpt( E3, 10.9,  0.0, 0.6 ) ),
  200.                  list(KV_OPEN) ),
  201.                cbspline( 3,
  202.                  list( ctlpt( E2, 0.0,  0.01 ),
  203.                        ctlpt( E2, 0.01, 1.0 ),
  204.                        ctlpt( E2, 0.5,  1.0 ),
  205.                        ctlpt( E2, 0.7,  1.0 ),
  206.                        ctlpt( E2, 1.0 , 0.01 ) ),
  207.                 list(KV_OPEN) ),
  208.                off, 1 );
  209. if ( do_texture == 1, attrib( vTailPara, "texture", texture ) );
  210. attrib( vTailPara, "rgb", graycolor );
  211. color( vTailPara, white );
  212.  
  213. VTailAntn = surfrev( ctlpt( E3, 0.001, 0.0, 1.0 ) +
  214.              ctlpt( E3, 0.01,  0.0, 1.0 ) +
  215.              ctlpt( E3, 0.01,  0.0, 0.8 ) +
  216.              ctlpt( E3, 0.03,  0.0, 0.7 ) +
  217.              ctlpt( E3, 0.03,  0.0, 0.3 ) +
  218.              ctlpt( E3, 0.001, 0.0, 0.0 ) )
  219.         * scale( vector( 0.5, 0.5, 0.7 ) )
  220.         * roty( -90 )
  221.         * trans( vector( 10.8, 0.0, 1.9 ) );
  222. if ( do_texture == 1, attrib( vTailAntn, "texture", texture ) );
  223. attrib( vTailAntn, "rgb", redcolor );
  224. color( vTailAntn, red );
  225.  
  226. vTail = list( VTail1, VTail2, VTailTop, VTailPara, VTailAntn);
  227.  
  228. #
  229. # Here are the wings:
  230. #
  231. c1 = cbspline( 3,
  232.            list( ctlpt( E3, 3.3, 0.0,  0.1 ),
  233.              ctlpt( E3, 3.7, 0.0,  0.3 ),
  234.              ctlpt( E3, 4.4, 0.0,  0.3 ),
  235.              ctlpt( E3, 9.0, 0.0, -0.1 ) ),
  236.            list( KV_OPEN ) ) +
  237.      cbspline( 3,
  238.            list( ctlpt( E3, 9.0, 0.0, -0.1 ),
  239.              ctlpt( E3, 6.0, 0.0, -0.1 ),
  240.              ctlpt( E3, 3.3, 0.0,  0.1 ) ),
  241.            list( KV_OPEN ) );
  242. c2 = c1
  243.      * scale( vector( 0.02, 0.02, 0.02) )
  244.      * trans( vector( 8.4, 3.3, -0.1 ) );
  245.  
  246. lWingMain = ruledsrf( c1, c2 );
  247. lWingCntr = sregion( lWingMain, ROW, 0.0, 0.78 );
  248. if ( do_texture == 1, attrib( lWingCntr, "texture", texture ) );
  249. attrib( lWingCntr, "rgb", graycolor );
  250. color( lWingCntr, white );
  251. lWingEnd = sregion( lWingMain, ROW, 0.78, 1.0);
  252. if ( do_texture == 1, attrib( lWingEnd, "texture", texture ) );
  253. attrib( lWingEnd, "rgb", redcolor );
  254. color( lWingEnd, red );
  255.  
  256. rWingMain = -lWingMain 
  257.         * scale( vector(1.0, -1.0, 1.0));
  258. rWingCntr = sregion( rWingMain, ROW, 0.0, 0.78);
  259. if ( do_texture == 1, attrib( rWingCntr, "texture", texture ) );
  260. attrib( rWingCntr, "rgb", graycolor );
  261. color( rWingCntr, white );
  262. rWingEnd = sregion( rWingMain, ROW, 0.78, 1.0);
  263. if ( do_texture == 1, attrib( rWingEnd, "texture", texture ) );
  264. attrib( rWingEnd, "rgb", redcolor );
  265. color( rWingEnd, red );
  266.  
  267. Wings = list( lWingCntr, lWingEnd, rWingCntr, rWingEnd);
  268. free( c1 ); free( c2 );
  269.  
  270. #
  271. # Make the four engines:
  272. #
  273. c1 = cbspline( 3,
  274.            list( ctlpt( E3, 0.0,  0.0, 0.0 ),
  275.              ctlpt( E3, 0.17, 0.0, 0.3 ),
  276.              ctlpt( E3, 0.17, 0.0, 0.6 ) ),
  277.            list( KV_OPEN ) ) +
  278.      ctlpt( E3, 0.25, 0.0, 0.6 ) +
  279.      cbspline( 3,
  280.            list( ctlpt( E3, 0.25, 0.0, 0.1 ),
  281.              ctlpt( E3, 0.35, 0.0, 0.6 ),
  282.              ctlpt( E3, 0.3,  0.0, 2.5 ),
  283.              ctlpt( E3, 0.25, 0.0, 3.0 ) ),
  284.           list( KV_OPEN ) ) +
  285.      ctlpt( E3, 0.25, 0.0, 2.0 ) +
  286.      ctlpt( E3, 0.1,  0.0, 2.0 ) +
  287.      ctlpt( E3, 0.0, 0.0,  2.3 );
  288.  
  289. EngineIns = surfrev( c1 ) * roty( 90 );
  290. color(EngineIns, blue);
  291.  
  292. Eng1Body = EngineIns * trans( vector( 3.2,  1.5, -0.7 ) );
  293. if ( do_texture == 1, attrib( Eng1Body, "texture", texture ) );
  294. attrib( Eng1Body, "rgb", graycolor );
  295. color( Eng1Body, white );
  296.  
  297. Eng2Body = EngineIns * trans( vector(5.8,  2.6, -0.5));
  298. if ( do_texture == 1, attrib( Eng2Body, "texture", texture ) );
  299. attrib( Eng2Body, "rgb", graycolor );
  300. color( Eng2Body, white );
  301.  
  302. c1 = cbspline( 3,
  303.            list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  304.              ctlpt( E3, 0.5,  0.07, 0.0 ),
  305.              ctlpt( E3, 1.0,  0.0,  0.0 ) ),
  306.            list( KV_OPEN ) ) +
  307.      cbspline( 3,
  308.            list( ctlpt( E3, 1.0,  0.0,  0.0 ),
  309.              ctlpt( E3, 0.5, -0.07, 0.0 ),
  310.              ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  311.            list( KV_OPEN ) );
  312.  
  313. Eng1c1 = c1
  314.          * scale( vector( 2.5, 1.0, 2.5))
  315.          * trans( vector( 3.45, 1.5, -0.44));
  316. Eng2c1 = c1
  317.          * scale( vector( 1.7, 1.0, 1.7 ) )
  318.          * trans( vector( 6.8, 2.6, -0.24 ) );
  319.  
  320. #
  321. # The extraction of the wing profiles just above the engines to make
  322. # sure the engine holder do not over/under shoot. The commented interaction
  323. # commands below will display the relevat curves of teh engine holder.
  324. #
  325. wingProf1 = csurface( lwingMain, ROW, 0.4 );
  326. color(wingProf1, green);
  327. wingProf2 = csurface( lwingMain, ROW, 0.78 );
  328. color(wingProf2, green);
  329. Eng1c2 = c1
  330.      * roty( 3 )
  331.          * scale( vector( 2.0, 1.0, 2.5 ) )
  332.          * trans( vector (5.55, 1.5, 0.1 ) );
  333. # interact( list( Eng1Body, Eng1c1, Eng1c2, Eng1Holder, wingProf1 ) );
  334. Eng2c2 = c1
  335.      * roty( 3.5 )
  336.          * scale( vector( 1.2, 1.0, 1.2 ) )
  337.          * trans( vector(7.4, 2.6, -0.03 ) );
  338. # interact( list( Eng2Body, Eng2c1, Eng2c2, wingProf2 ) );
  339.  
  340. Eng1Holder = ruledsrf( Eng1c1, Eng1c2 );
  341. if ( do_texture == 1, attrib( Eng1Holder, "texture", texture ) );
  342. attrib( Eng1Holder, "rgb", graycolor );
  343. color( Eng1Holder, white );
  344.  
  345. Eng2Holder = ruledsrf( Eng2c1, Eng2c2 );
  346. if ( do_texture == 1, attrib( Eng2Holder, "texture", texture ) );
  347. attrib( Eng2Holder, "rgb", graycolor );
  348. color( Eng2Holder, white );
  349.  
  350. free( wingProf1 ); free( wingProf2 );
  351. free( Eng1c1); free( Eng1c2 ); free( Eng2c1 ); free( Eng2c2 ); free( c1 );
  352.  
  353. reflect = scale( vector( 1.0, -1.0, 1.0 ) );
  354. Engine1 = list( Eng1Body, Eng1Holder );
  355. Engine2 = list( Eng2Body, Eng2Holder );
  356. Engine3 = list( -Eng1Body, -Eng1Holder ) * reflect;
  357. attrib( Engine3, "rgb", graycolor );
  358. color( Engine3, white );
  359. Engine4 = list( -Eng2Body, -Eng2Holder ) * reflect;
  360. attrib( Engine4, "rgb", graycolor );
  361. color( Engine4, white );
  362.  
  363. Engines = list( Engine1, Engine2, Engine3, Engine4 );
  364.  
  365. #
  366. # Model the gas tank.
  367. #
  368. tankBody = swpsclsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.3 ),
  369.               cbspline( 3,
  370.                     list( ctlpt( E3, 1.5,  0.0, -0.5 ),
  371.                       ctlpt( E3, 2.5,  0.0, -0.5 ),
  372.                       ctlpt( E3, 3.5,  0.0, -0.5 ),
  373.                       ctlpt( E3, 6.0,  0.0, -0.5 ),
  374.                       ctlpt( E3, 7.5,  0.0, -0.5 ) ),
  375.                     list( KV_OPEN ) ),
  376.               cbspline( 3,
  377.                     list( ctlpt( E2, 0.0,   0.01 ),
  378.                       ctlpt( E2, 0.01,  1.0 ),
  379.                       ctlpt( E2, 0.5,   1.0 ),
  380.                       ctlpt( E2, 0.9,   1.0 ),
  381.                       ctlpt( E2, 1.0 ,  0.01 ) ),
  382.                     list( KV_OPEN ) ),
  383.               off, 1 );
  384. if ( do_texture == 1, attrib( tankBody, "texture", texture ) );
  385. attrib( tankBody, "rgb", graycolor );
  386. color( tankBody, white );
  387.  
  388. c1 = cbspline( 3,
  389.            list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  390.              ctlpt( E3, 0.0,  0.01, 0.0 ),
  391.              ctlpt( E3, 0.5,  0.02, 0.0 ),
  392.              ctlpt( E3, 1.0,  0.0,  0.0 ) ),
  393.            list( KV_OPEN ) ) +
  394.      cbspline( 3,
  395.            list( ctlpt( E3, 1.0,  0.0,  0.0 ),
  396.              ctlpt( E3, 0.5, -0.02, 0.0 ),
  397.              ctlpt( E3, 0.0, -0.01, 0.0 ),
  398.              ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  399.            list( KV_OPEN ) );
  400. tankWIns = ruledsrf( c1,
  401.              c1
  402.                      * scale( vector( 0.01, 0.01, 0.01 ) )
  403.                      * trans( vector( 0.99, 0.0, 0.56 ) ) );
  404. if ( do_texture == 1, attrib( tankWIns, "texture", texture ) );
  405. attrib( tankWIns, "rgb", graycolor );
  406. color( tankWIns, white );
  407.  
  408. tankWing1 = tankWIns * rotx(45) * trans( vector( 6.2, 0.0, -0.5 ) );
  409. tankWing2 = tankWIns * rotx(135) * trans( vector( 6.2, 0.0, -0.5 ) );
  410. tankWing3 = tankWIns * rotx(225) * trans( vector( 6.2, 0.0, -0.5 ) );
  411. tankWing4 = tankWIns * rotx(315) * trans( vector( 6.2, 0.0, -0.5 ) );
  412.  
  413. tankHolder = ruledsrf( c1
  414.                * scale( vector( 5.2, 5.2, 1.0 ) )
  415.                * trans( vector( 1.8, 0.0, -0.5 ) ),
  416.                c1
  417.                * scale( vector( 4.0, 5.2, 1.0 ) )
  418.                * trans( vector( 2.7, 0.0, 0.1 ) ) );
  419. if ( do_texture == 1, attrib( tankHolder, "texture", texture ) );
  420. attrib( tankHolder, "rgb", graycolor );
  421. color( tankHolder, white );
  422.  
  423. tank = list( tankBody, tankHolder, tankWing1, tankWing2, tankWing3, tankWing4 );
  424.  
  425.  
  426. #
  427. # Collect all, display and save. Go to single buffer since this one is slow.
  428. #
  429. b58 = list( fuseFront, fuseback, cockpit, Wings, vTail, Engines, tank );
  430. viewstate("DblBuffer");
  431. interact( list( view_mat, b58 ) );
  432. save( "b58", b58 );
  433.  
  434. #
  435. # Make walls for shadows.
  436. #
  437. v1 = vector( 0.0, 0.0, 0.0 );
  438. v2 = vector( 0.0, 1.0, 0.0 );
  439. v3 = vector( 1.0, 1.0, 0.0 );
  440. v4 = vector( 1.0, 0.0, 0.0 );
  441. xy_plane = poly( list( v1, v2, v3, v4 ), false );
  442. color( xy_plane, white );
  443. attrib( xy_plane, "rgb", "100,100,100" );
  444.  
  445. v1 = vector( 0.0, 0.0, 0.0 );
  446. v2 = vector( 0.0, 0.0, 1.0 );
  447. v3 = vector( 1.0, 0.0, 1.0 );
  448. v4 = vector( 1.0, 0.0, 0.0 );
  449. xz_plane = poly( list( v1, v2, v3, v4 ), false );
  450. color( xz_plane, white );
  451. attrib( xz_plane, "rgb", "100,100,100" );
  452.  
  453. v1 = vector( 0.0, 0.0, 0.0 );
  454. v2 = vector( 0.0, 0.0, 1.0 );
  455. v3 = vector( 0.0, 1.0, 1.0 );
  456. v4 = vector( 0.0, 1.0, 0.0 );
  457. yz_plane = poly( list( v1, v2, v3, v4 ), false );
  458. color( yz_plane, white );
  459. attrib( yz_plane, "rgb", "100,100,100" );
  460. walls = list( xy_plane, xz_plane, yz_plane )
  461.     * scale( vector( 100.0, 100.0, 100.0 ) )
  462.     * trans( vector( -3.0, -5.0, -3.0 ) );
  463. save( "b58walls", walls );
  464.  
  465. view_mat = save_mat;
  466. view( list( view_mat ), on );
  467.