home *** CD-ROM | disk | FTP | other *** search
- ' Diamond Data File Creator
- ' (c) JEff Bowermaster, 1992
- ' "What a mess (r)"
-
- TYPE vector
- x AS SINGLE
- y AS SINGLE
- z AS SINGLE
- END TYPE
-
- pi = 3.1415926536#
- radians = 180 / pi
-
- DIM vertex(42) AS vector, triangle(3) AS vector
- DIM red(16), green(16), blue(16)
-
- ' set the screen up with pretty rainbow colors
-
- SCREEN 12
-
- scale = .01
- xoff = 320
- yoff = 240
-
- WINDOW ((0 - xoff) * scale, (0 - yoff) * scale)-((639 - xoff) * scale, (479 - yoff) * scale)
-
- FOR y = 1 TO 4
- FOR x = 1 TO 4
- colornum = x + ((y - 1) * 4) - 1
- READ red(colornum), green(colornum), blue(colornum)
- KOLOR = 65536 * blue(colornum) + 256 * green(colornum) + red(colornum)
- PALETTE colornum, KOLOR
- COLOR colornum
- NEXT x
- NEXT y
-
-
- 'Rainbow Palette
-
- DATA 0, 0, 0
- DATA 32, 0, 0
- DATA 42, 0, 0
- DATA 58, 16, 0
- DATA 63, 32, 0
- DATA 58, 56, 0
- DATA 16, 42, 0
- DATA 0, 30, 36
- DATA 0, 20, 40
- DATA 0, 10, 48
- DATA 0, 0, 63
- DATA 20, 0, 53
- DATA 23, 0, 29
- DATA 19, 7, 17
- DATA 50, 40, 45
- DATA 63, 63, 63
-
- pi = 3.1415926535#
- rad = pi / 180
- p = .5
-
- OPEN "diamond.vo" FOR OUTPUT AS #1
-
- l1 = 1
- l2 = 2 ^ p
- l3 = 3 ^ p
- l4 = (.4) ^ p
-
- d1 = 1!
- d2 = .8
- d3 = .5
- d4 = -.5
- d5 = -1!
-
- oval = 1
- xfactor = 1 / oval
- yfactor = oval / 1
-
- FOR f = 1 TO 8
- a = 360 * f / 8
-
- vertex(f).x = l1 * xfactor * COS(rad * a)
- vertex(f).y = l1 * yfactor * SIN(rad * a)
- vertex(f).z = d1
-
- vertex(f + 8).x = l2 * xfactor * COS(rad * (a + 22.5))
- vertex(f + 8).y = l2 * yfactor * SIN(rad * (a + 22.5))
- vertex(f + 8).z = d2
-
- vertex(f + 16).x = l3 * xfactor * COS(rad * (a + 45))
- vertex(f + 16).y = l3 * yfactor * SIN(rad * (a + 45))
- vertex(f + 16).z = d3
-
- vertex(f + 24).x = l3 * xfactor * COS(rad * (a + 67.5))
- vertex(f + 24).y = l3 * yfactor * SIN(rad * (a + 67.5))
- vertex(f + 24).z = d3
-
- vertex(f + 32).x = l4 * xfactor * COS(rad * (a + 67.5))
- vertex(f + 32).y = l4 * yfactor * SIN(rad * (a + 67.5))
- vertex(f + 32).z = d4
-
- NEXT f
-
- vertex(41).x = 0
- vertex(41).y = 0
- vertex(41).z = d5
-
- vertex(42).x = 0
- vertex(42).y = 0
- vertex(42).z = d1
-
- ' The triangular faces listed clockwise by vertex
-
- 'Crown
- eek:
- DATA 1,42,2
- DATA 2,42,3
- DATA 3,42,4
- DATA 4,42,5
- DATA 5,42,6
- DATA 6,42,7
- DATA 7,42,8
- DATA 8,42,1
-
- DATA 1,2,9
- DATA 2,3,10
- DATA 3,4,11
- DATA 4,5,12
- DATA 5,6,13
- DATA 6,7,14
- DATA 7,8,15
- DATA 8,1,16
-
- DATA 2,17,9
- DATA 2,10,17
- DATA 3,18,10
- DATA 3,11,18
- DATA 4,19,11
- DATA 4,12,19
- DATA 5,20,12
- DATA 5,13,20
-
- DATA 6,21,13
- DATA 6,14,21
- DATA 7,22,14
- DATA 7,15,22
- DATA 8,23,15
- DATA 8,16,23
- DATA 1,24,16
- DATA 1,9,24
-
- DATA 10,25,17
- DATA 10,18,25
- DATA 11,26,18
- DATA 11,19,26
- DATA 12,27,19
- DATA 12,20,27
- DATA 13,28,20
- DATA 13,21,28
-
- DATA 14,29,21
- DATA 14,22,29
- DATA 15,30,22
- DATA 15,23,30
- DATA 16,31,23
- DATA 16,24,31
- DATA 9,32,24
- DATA 9,17,32
-
- 'Pavilion
-
- DATA 17,40,32
- DATA 24,32,40
- DATA 24,40,39
- DATA 24,39,31
- DATA 23,31,39
- DATA 23,39,38
- DATA 23,38,30
- DATA 22,30,38
-
- DATA 22,38,37
- DATA 22,37,29
- DATA 21,29,37
- DATA 21,37,36
- DATA 21,36,28
- DATA 20,28,36
- DATA 20,36,35
- DATA 20,35,27
-
- DATA 19,27,35
- DATA 19,35,34
- DATA 19,34,26
- DATA 18,26,34
- DATA 18,34,33
- DATA 18,33,25
- DATA 17,25,33
- DATA 17,33,40
-
- DATA 40,33,41
- DATA 40,41,39
- DATA 39,41,38
- DATA 38,41,37
- DATA 37,41,36
- DATA 36,41,35
- DATA 35,41,34
- DATA 34,41,33
-
- ' View from an arbitrary angle (choose it here)
-
- xrotate = 240
- yrotate = 0
- zrotate = 0
-
- FOR i = 1 TO 80
- READ v(1), v(2), v(3)
- FOR t = 1 TO 3
-
- x0 = vertex(v(t)).x
- y0 = vertex(v(t)).y
- z0 = vertex(v(t)).z
-
- X1 = x0
- Y1 = y0 * COS(xrotate / radians) - z0 * SIN(xrotate / radians)
- Z1 = y0 * SIN(xrotate / radians) + z0 * COS(xrotate / radians)
-
- X2 = Z1 * SIN(yrotate / radians) + X1 * COS(yrotate / radians)
- Y2 = Y1
- Z2 = Z1 * COS(yrotate / radians) - X1 * SIN(yrotate / radians)
-
- X3 = X2 * COS(zrotate / radians) - Y2 * SIN(zrotate / radians)
- Y3 = X2 * SIN(zrotate / radians) + Y2 * COS(zrotate / radians)
- z3 = Z2
-
- triangle(t).x = X3
- triangle(t).y = Y3
- triangle(t).z = z3
-
- NEXT t
-
- centerx = (vertex(v(1)).x + vertex(v(2)).x + vertex(v(3)).x) / 3
- centery = (vertex(v(1)).y + vertex(v(2)).y + vertex(v(3)).y) / 3
- centerz = (vertex(v(1)).z + vertex(v(2)).z + vertex(v(3)).z) / 3
-
- c = 16 - ((4 * (centerz / 1)) + 9) 'color code by height
-
- LINE (triangle(1).x, triangle(1).y)-(triangle(2).x, triangle(2).y), i MOD 15 + 1
- LINE (triangle(2).x, triangle(2).y)-(triangle(3).x, triangle(3).y), i MOD 15 + 1
- LINE (triangle(3).x, triangle(3).y)-(triangle(1).x, triangle(1).y), i MOD 15 + 1
-
-
- PRINT #1, "polygon {"
- PRINT #1, " points 3"
- PRINT #1, USING " vertex ##.#### ##.#### ##.#### "; triangle(1).x, triangle(1).y, triangle(1).z
- PRINT #1, USING " vertex ##.#### ##.#### ##.#### "; triangle(2).x, triangle(2).y, triangle(2).z
- PRINT #1, USING " vertex ##.#### ##.#### ##.#### "; triangle(3).x, triangle(3).y, triangle(3).z
- PRINT #1, "}"
- PRINT #1,
-
- NEXT i
- CLOSE #1
-
-