Guest User

Untitled

a guest
Oct 26th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 3.04 KB | None | 0 0
  1. LINES = 12
  2. STARS = 64
  3.  
  4. SCREENX = 160
  5. SCREENY = 100
  6.  
  7. DIM OBJECTX(LINES * 2 - 1)
  8. DIM OBJECTY(LINES * 2 - 1)
  9. DIM OBJECTZ(LINES * 2 - 1)
  10.  
  11. DIM FLDX(STARS - 1)
  12. DIM FLDY(STARS - 1)
  13. DIM FLDZ(STARS - 1)
  14.  
  15. DIM NLX1(LINES - 1)
  16. DIM NLY1(LINES - 1)
  17. DIM NLX2(LINES - 1)
  18. DIM NLY2(LINES - 1)
  19. DIM OLX1(LINES - 1)
  20. DIM OLY1(LINES - 1)
  21. DIM OLX2(LINES - 1)
  22. DIM OLY2(LINES - 1)
  23.  
  24. DIM NPX(STARS - 1)
  25. DIM NPY(STARS - 1)
  26. DIM OPX(STARS - 1)
  27. DIM OPY(STARS - 1)
  28.  
  29. FOR I = 0 TO STARS - 1
  30. FLDX(I) = 10 * (RND - .5)
  31. FLDY(I) = 10 * (RND - .5)
  32. FLDZ(I) = 100 * RND
  33. NEXT
  34.  
  35. FOR I = 0 TO (LINES * 2) - 1
  36. READ OBJECTX(I)
  37. READ OBJECTY(I)
  38. READ OBJECTZ(I)
  39. NEXT
  40.  
  41. SCREEN 13
  42.  
  43. FOR I = 0 TO 255
  44.  
  45. OUT &H3C8, I
  46. OUT &H3C9, I / 4.1
  47. OUT &H3C9, I / 4.1
  48. OUT &H3C9, I / 4.1
  49.  
  50. NEXT
  51.  
  52. DEPTH = 4
  53. SCALE = 200
  54.  
  55. T = U = V = 0!
  56.  
  57. MAIN:
  58.  
  59. CT = COS(T)
  60. ST = SIN(T)
  61. CU = COS(U)
  62. SU = SIN(U)
  63. CV = COS(V)
  64. SV = SIN(V)
  65.  
  66. FOR I = 0 TO LINES - 1
  67.  
  68. RX1 = OBJECTX(2 * I + 0)
  69. RY1 = OBJECTY(2 * I + 0)
  70. RZ1 = OBJECTZ(2 * I + 0)
  71. RX2 = OBJECTX(2 * I + 1)
  72. RY2 = OBJECTY(2 * I + 1)
  73. RZ2 = OBJECTZ(2 * I + 1)
  74.  
  75. TRX1 = (CU * CV) * RX1 + (-CT * SV + ST * SU * CV) * RY1 + (ST * SV + CT * SU * CV) * RZ1
  76. TRY1 = (CU * SV) * RX1 + (CT * CV + ST * SU * SV) * RY1 + (-ST * CV + CT * SU * SV) * RZ1
  77. TRZ1 = (-SU) * RX1 + (ST * CU) * RY1 + (CT * CU) * RZ1
  78.  
  79. TRX2 = (CU * CV) * RX2 + (-CT * SV + ST * SU * CV) * RY2 + (ST * SV + CT * SU * CV) * RZ2
  80. TRY2 = (CU * SV) * RX2 + (CT * CV + ST * SU * SV) * RY2 + (-ST * CV + CT * SU * SV) * RZ2
  81. TRZ2 = (-SU) * RX2 + (ST * CU) * RY2 + (CT * CU) * RZ2
  82.  
  83. T = T + .001
  84. U = U + .002
  85. V = V + .003
  86.  
  87. OLX1(I) = NLX1(I)
  88. OLY1(I) = NLY1(I)
  89. OLX2(I) = NLX2(I)
  90. OLY2(I) = NLY2(I)
  91.  
  92. NX1 = TRX1 / (TRZ1 + DEPTH) * SCALE
  93. NY1 = TRY1 / (TRZ1 + DEPTH) * SCALE
  94. NX2 = TRX2 / (TRZ2 + DEPTH) * SCALE
  95. NY2 = TRY2 / (TRZ2 + DEPTH) * SCALE
  96.  
  97. NLX1(I) = NX1 + SCREENX
  98. NLY1(I) = NY1 + SCREENY
  99. NLX2(I) = NX2 + SCREENX
  100. NLY2(I) = NY2 + SCREENY
  101.  
  102. NEXT
  103.  
  104. FOR I = 0 TO STARS - 1
  105.  
  106. OPX(I) = NPX(I)
  107. OPY(I) = NPY(I)
  108.  
  109. SX = FLDX(I) / (FLDZ(I) + 1) * SCALE
  110. SY = FLDY(I) / (FLDZ(I) + 1) * SCALE
  111.  
  112. NPX(I) = SX + SCREENX
  113. NPY(I) = SY + SCREENY
  114.  
  115. FLDZ(I) = FLDZ(I) - 1
  116. IF FLDZ(I) < 2 THEN FLDZ(I) = 100
  117.  
  118. NEXT
  119.  
  120. WAIT &H3DA, 8
  121.  
  122. FOR I = 0 TO LINES - 1
  123. LINE (OLX1(I), OLY1(I))-(OLX2(I), OLY2(I)), 0
  124. NEXT
  125. FOR I = 0 TO STARS - 1
  126. PSET (OPX(I), OPY(I)), 0
  127. NEXT
  128.  
  129.  
  130. FOR I = 0 TO LINES - 1
  131. LINE (NLX1(I), NLY1(I))-(NLX2(I), NLY2(I)), 255
  132. NEXT
  133. FOR I = 0 TO STARS - 1
  134. PSET (NPX(I), NPY(I)), 255
  135. NEXT
  136.  
  137.  
  138.  
  139.  
  140. IF INKEY$ <> "" GOTO AWYYU
  141. GOTO MAIN
  142. AWYYU:
  143.  
  144.  
  145. DATA -1.0, -1.0, -1.0
  146. DATA  1.0, -1.0, -1.0
  147. DATA  1.0, -1.0, -1.0
  148. DATA  1.0,  1.0, -1.0
  149. DATA  1.0,  1.0, -1.0
  150. DATA -1.0,  1.0, -1.0
  151. DATA -1.0,  1.0, -1.0
  152. DATA -1.0, -1.0, -1.0
  153.  
  154. DATA -1.0, -1.0,  1.0
  155. DATA  1.0, -1.0,  1.0
  156. DATA  1.0, -1.0,  1.0
  157. DATA  1.0,  1.0,  1.0
  158. DATA  1.0,  1.0,  1.0
  159. DATA -1.0,  1.0,  1.0
  160. DATA -1.0,  1.0,  1.0
  161. DATA -1.0, -1.0,  1.0
  162.  
  163. DATA -1.0, -1.0, -1.0
  164. DATA -1.0, -1.0,  1.0
  165. DATA  1.0, -1.0, -1.0
  166. DATA  1.0, -1.0,  1.0
  167. DATA  1.0,  1.0, -1.0
  168. DATA  1.0,  1.0,  1.0
  169. DATA -1.0,  1.0, -1.0
  170. DATA -1.0,  1.0,  1.0
Add Comment
Please, Sign In to add comment