home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / raytrace / pov / gen / diamndrv / diamdat.bas next >
Encoding:
BASIC Source File  |  1992-11-22  |  4.9 KB  |  261 lines

  1. ' Diamond Data File Creator
  2. ' (c) JEff Bowermaster, 1992
  3. ' "What a mess (r)"
  4.  
  5. TYPE vector
  6.   x AS SINGLE
  7.   y AS SINGLE
  8.   z AS SINGLE
  9. END TYPE
  10.  
  11. pi = 3.1415926536#
  12. radians = 180 / pi
  13.  
  14. DIM vertex(42) AS vector, triangle(3) AS vector
  15. DIM red(16), green(16), blue(16)
  16.  
  17. ' set the screen up with pretty rainbow colors
  18.  
  19. SCREEN 12
  20.  
  21. scale = .01
  22. xoff = 320
  23. yoff = 240
  24.  
  25. WINDOW ((0 - xoff) * scale, (0 - yoff) * scale)-((639 - xoff) * scale, (479 - yoff) * scale)
  26.  
  27. FOR y = 1 TO 4
  28.     FOR x = 1 TO 4
  29.          colornum = x + ((y - 1) * 4) - 1
  30.          READ red(colornum), green(colornum), blue(colornum)
  31.          KOLOR = 65536 * blue(colornum) + 256 * green(colornum) + red(colornum)
  32.          PALETTE colornum, KOLOR
  33.          COLOR colornum
  34.     NEXT x
  35. NEXT y
  36.  
  37.  
  38. 'Rainbow Palette
  39.  
  40. DATA  0,  0,  0
  41. DATA 32,  0,  0
  42. DATA 42,  0,  0
  43. DATA 58, 16,  0
  44. DATA 63, 32,  0
  45. DATA 58, 56,  0
  46. DATA 16, 42,  0
  47. DATA  0, 30, 36
  48. DATA  0, 20, 40
  49. DATA  0, 10, 48
  50. DATA  0,  0, 63
  51. DATA 20,  0, 53
  52. DATA 23,  0, 29
  53. DATA 19,  7, 17
  54. DATA 50, 40, 45
  55. DATA 63, 63, 63
  56.  
  57. pi = 3.1415926535#
  58. rad = pi / 180
  59. p = .5
  60.  
  61. OPEN "diamond.vo" FOR OUTPUT AS #1
  62.  
  63. l1 = 1
  64. l2 = 2 ^ p
  65. l3 = 3 ^ p
  66. l4 = (.4) ^ p
  67.  
  68. d1 = 1!
  69. d2 = .8
  70. d3 = .5
  71. d4 = -.5
  72. d5 = -1!
  73.  
  74. oval = 1
  75. xfactor = 1 / oval
  76. yfactor = oval / 1
  77.  
  78. FOR f = 1 TO 8
  79.   a = 360 * f / 8
  80.  
  81.   vertex(f).x = l1 * xfactor * COS(rad * a)
  82.   vertex(f).y = l1 * yfactor * SIN(rad * a)
  83.   vertex(f).z = d1
  84.  
  85.   vertex(f + 8).x = l2 * xfactor * COS(rad * (a + 22.5))
  86.   vertex(f + 8).y = l2 * yfactor * SIN(rad * (a + 22.5))
  87.   vertex(f + 8).z = d2
  88.  
  89.   vertex(f + 16).x = l3 * xfactor * COS(rad * (a + 45))
  90.   vertex(f + 16).y = l3 * yfactor * SIN(rad * (a + 45))
  91.   vertex(f + 16).z = d3
  92.  
  93.   vertex(f + 24).x = l3 * xfactor * COS(rad * (a + 67.5))
  94.   vertex(f + 24).y = l3 * yfactor * SIN(rad * (a + 67.5))
  95.   vertex(f + 24).z = d3
  96.  
  97.   vertex(f + 32).x = l4 * xfactor * COS(rad * (a + 67.5))
  98.   vertex(f + 32).y = l4 * yfactor * SIN(rad * (a + 67.5))
  99.   vertex(f + 32).z = d4
  100.  
  101. NEXT f
  102.  
  103.   vertex(41).x = 0
  104.   vertex(41).y = 0
  105.   vertex(41).z = d5
  106.  
  107.   vertex(42).x = 0
  108.   vertex(42).y = 0
  109.   vertex(42).z = d1
  110.  
  111. ' The triangular faces listed clockwise by vertex
  112.  
  113. 'Crown
  114. eek:
  115. DATA 1,42,2
  116. DATA 2,42,3
  117. DATA 3,42,4
  118. DATA 4,42,5
  119. DATA 5,42,6
  120. DATA 6,42,7
  121. DATA 7,42,8
  122. DATA 8,42,1
  123.  
  124. DATA 1,2,9
  125. DATA 2,3,10
  126. DATA 3,4,11
  127. DATA 4,5,12
  128. DATA 5,6,13
  129. DATA 6,7,14
  130. DATA 7,8,15
  131. DATA 8,1,16
  132.  
  133. DATA 2,17,9
  134. DATA 2,10,17
  135. DATA 3,18,10
  136. DATA 3,11,18
  137. DATA 4,19,11
  138. DATA 4,12,19
  139. DATA 5,20,12
  140. DATA 5,13,20
  141.  
  142. DATA 6,21,13
  143. DATA 6,14,21
  144. DATA 7,22,14
  145. DATA 7,15,22
  146. DATA 8,23,15
  147. DATA 8,16,23
  148. DATA 1,24,16
  149. DATA 1,9,24
  150.  
  151. DATA 10,25,17
  152. DATA 10,18,25
  153. DATA 11,26,18
  154. DATA 11,19,26
  155. DATA 12,27,19
  156. DATA 12,20,27
  157. DATA 13,28,20
  158. DATA 13,21,28
  159.  
  160. DATA 14,29,21
  161. DATA 14,22,29
  162. DATA 15,30,22
  163. DATA 15,23,30
  164. DATA 16,31,23
  165. DATA 16,24,31
  166. DATA 9,32,24
  167. DATA 9,17,32
  168.  
  169. 'Pavilion
  170.  
  171. DATA 17,40,32
  172. DATA 24,32,40
  173. DATA 24,40,39
  174. DATA 24,39,31
  175. DATA 23,31,39
  176. DATA 23,39,38
  177. DATA 23,38,30
  178. DATA 22,30,38
  179.  
  180. DATA 22,38,37
  181. DATA 22,37,29
  182. DATA 21,29,37
  183. DATA 21,37,36
  184. DATA 21,36,28
  185. DATA 20,28,36
  186. DATA 20,36,35
  187. DATA 20,35,27
  188.  
  189. DATA 19,27,35
  190. DATA 19,35,34
  191. DATA 19,34,26
  192. DATA 18,26,34
  193. DATA 18,34,33
  194. DATA 18,33,25
  195. DATA 17,25,33
  196. DATA 17,33,40
  197.  
  198. DATA 40,33,41
  199. DATA 40,41,39
  200. DATA 39,41,38
  201. DATA 38,41,37
  202. DATA 37,41,36
  203. DATA 36,41,35
  204. DATA 35,41,34
  205. DATA 34,41,33
  206.  
  207. ' View from an arbitrary angle (choose it here)
  208.  
  209. xrotate = 240
  210. yrotate = 0
  211. zrotate = 0
  212.  
  213. FOR i = 1 TO 80
  214.     READ v(1), v(2), v(3)
  215.         FOR t = 1 TO 3
  216.  
  217.         x0 = vertex(v(t)).x
  218.         y0 = vertex(v(t)).y
  219.         z0 = vertex(v(t)).z
  220.  
  221.         X1 = x0
  222.         Y1 = y0 * COS(xrotate / radians) - z0 * SIN(xrotate / radians)
  223.         Z1 = y0 * SIN(xrotate / radians) + z0 * COS(xrotate / radians)
  224.  
  225.         X2 = Z1 * SIN(yrotate / radians) + X1 * COS(yrotate / radians)
  226.         Y2 = Y1
  227.         Z2 = Z1 * COS(yrotate / radians) - X1 * SIN(yrotate / radians)
  228.  
  229.         X3 = X2 * COS(zrotate / radians) - Y2 * SIN(zrotate / radians)
  230.         Y3 = X2 * SIN(zrotate / radians) + Y2 * COS(zrotate / radians)
  231.         z3 = Z2
  232.  
  233.         triangle(t).x = X3
  234.         triangle(t).y = Y3
  235.         triangle(t).z = z3
  236.  
  237.     NEXT t
  238.  
  239.     centerx = (vertex(v(1)).x + vertex(v(2)).x + vertex(v(3)).x) / 3
  240.     centery = (vertex(v(1)).y + vertex(v(2)).y + vertex(v(3)).y) / 3
  241.     centerz = (vertex(v(1)).z + vertex(v(2)).z + vertex(v(3)).z) / 3
  242.  
  243.     c = 16 - ((4 * (centerz / 1)) + 9)     'color code by height
  244.  
  245.     LINE (triangle(1).x, triangle(1).y)-(triangle(2).x, triangle(2).y), i MOD 15 + 1
  246.     LINE (triangle(2).x, triangle(2).y)-(triangle(3).x, triangle(3).y), i MOD 15 + 1
  247.     LINE (triangle(3).x, triangle(3).y)-(triangle(1).x, triangle(1).y), i MOD 15 + 1
  248.     
  249.  
  250.     PRINT #1, "polygon {"
  251.     PRINT #1, "      points 3"
  252.     PRINT #1, USING "      vertex  ##.#### ##.#### ##.#### "; triangle(1).x, triangle(1).y, triangle(1).z
  253.     PRINT #1, USING "      vertex  ##.#### ##.#### ##.#### "; triangle(2).x, triangle(2).y, triangle(2).z
  254.     PRINT #1, USING "      vertex  ##.#### ##.#### ##.#### "; triangle(3).x, triangle(3).y, triangle(3).z
  255.     PRINT #1, "}"
  256.     PRINT #1,
  257.  
  258. NEXT i
  259. CLOSE #1
  260.  
  261.