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

  1. #
  2. # Simple (and not so simple) 3D puzzles
  3. #
  4. #                    Gershon Elber, November 1994
  5. #
  6.  
  7. #############################################################################
  8. # StickStar
  9. #
  10. sqrt2 = sqrt( 2 );
  11. eps = 0.015;
  12. rad = 0.3;
  13. len = (rad + eps) * 2;
  14. ItemAux1 = box(vector(-rad / sqrt2, -rad / sqrt2, -len),
  15.            rad * 2 / sqrt2, rad * 2 / sqrt2, len * 2) * rz(45);
  16. ItemAux2 = (ItemAux1 * tx(rad) -
  17.         ItemAux1 * rotx(90) * tz(rad + eps) -
  18.         ItemAux1 * rotx(90) * tz(-rad - eps)) * tx(eps / 2);
  19. diag = len + eps;
  20. diagPoly = poly(list(vector( diag, diag, 0),
  21.              vector(-diag, diag, 0),
  22.              vector(-diag, 0, diag),
  23.              vector( diag, 0, diag)),
  24.         false);
  25. Item1 = ItemAux2 - diagPoly
  26.          - diagPoly * sy(-1)
  27.          - diagPoly * sz(-1)
  28.          - diagPoly * sz(-1) * sy(-1);
  29. color(Item1, red);
  30.  
  31. Item2 = Item1 * sx(-1);
  32. color(Item2, magenta);
  33.  
  34. Item3 = Item1 * rx(90) * rz(90);
  35. color(Item3, green);
  36.  
  37. Item4 = Item1 * rx(90) * rz(-90);
  38. color(Item4, yellow);
  39.  
  40. Item5 = Item1 * rx(90) * ry(90);
  41. color(Item5, blue);
  42.  
  43. Item6 = Item1 * rx(90) * ry(-90);
  44. color(Item6, cyan);
  45.  
  46. AllItems = list(Item1, Item2, Item3, Item4, Item5, Item6);
  47. view(AllItems, on);
  48. save("stickstr", AllItems);
  49.  
  50. #############################################################################
  51. # Sixbricks.
  52. #
  53. sqrt2 = sqrt( 2 );
  54. eps = 0.015;
  55. rad = 0.3;
  56. len = (rad * 2 + eps) * 2;
  57. ItemAux1 = box(vector(-rad / sqrt2, -rad / sqrt2, -len),
  58.            rad * 2 / sqrt2, rad * 2 / sqrt2, len * 2) * rz(45);
  59. Item1 = (ItemAux1 * tx(rad) -
  60.      ItemAux1 * rotx(90) * tz(rad + eps) -
  61.      ItemAux1 * rotx(90) * tz(-rad - eps)) * tx(eps / 2);
  62. color(Item1, red);
  63.  
  64. Item2 = Item1 * sx(-1);
  65. color(Item2, magenta);
  66.  
  67. Item3 = Item1 * rx(90) * rz(90);
  68. color(Item3, green);
  69.  
  70. Item4 = Item1 * rx(90) * rz(-90);
  71. color(Item4, yellow);
  72.  
  73. Item5 = Item1 * rx(90) * ry(90);
  74. color(Item5, blue);
  75.  
  76. Item6 = Item1 * rx(90) * ry(-90);
  77. color(Item6, cyan);
  78.  
  79. AllItems = list(Item1, Item2, Item3, Item4, Item5, Item6);
  80. view(AllItems, on);
  81. save("sixbrick", AllItems);
  82.  
  83. #############################################################################
  84. # Rounded StickStar (No (dis)assembly).
  85. #
  86. eps = 0.05;
  87. resolution = 40;
  88. rad = 0.3;
  89. len = (rad * 2 + eps) * 2;
  90. ItemAux1 = cylin(vector(0, 0, -len), vector(0, 0, len * 2), rad);
  91. ItemAux2 = ItemAux1 * tx(rad) -
  92.        ItemAux1 * rotx(90) * sc(1 + eps) * tz(rad) -
  93.        ItemAux1 * rotx(90) * sc(1 + eps) * tz(-rad);
  94. diag = len + eps;
  95. diagPoly = poly(list(vector( diag, diag, 0),
  96.              vector(-diag, diag, 0),
  97.              vector(-diag, 0, diag),
  98.              vector( diag, 0, diag)),
  99.         false);
  100. Item1 = ItemAux2 - diagPoly
  101.          - diagPoly * sy(-1)
  102.          - diagPoly * sz(-1)
  103.          - diagPoly * sz(-1) * sy(-1);
  104. color(Item1, red);
  105.  
  106. Item2 = Item1 * sx(-1);
  107. color(Item2, magenta);
  108.  
  109. Item3 = Item1 * rx(90) * rz(90);
  110. color(Item3, green);
  111.  
  112. Item4 = Item1 * rx(90) * rz(-90);
  113. color(Item4, yellow);
  114.  
  115. Item5 = Item1 * rx(90) * ry(90);
  116. color(Item5, blue);
  117.  
  118. Item6 = Item1 * rx(90) * ry(-90);
  119. color(Item6, cyan);
  120.  
  121. AllItems = list(Item1, Item2, Item3, Item4, Item5, Item6);
  122. view(AllItems, on);
  123. save("stckstrr", AllItems);
  124.