home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 201-225 / apd214 / showobj.amos / showobj.amosSourceCode
AMOS Source Code  |  1978-02-21  |  7KB  |  277 lines

  1. Hide On 
  2. '
  3. '                 VECTOR OBJECT SHOWER BY NICK.  
  4. 'THIS PROGRAM WAS DESIGNED TO DISPLAY OBJECTS CREATED ON PAPER 
  5. 'TO SEE WETHER THEY LOOKED GOOD ENOUGH TO PUT ON TO A DEMO WHICH IM  
  6. 'ABOUT TO START WORK ON. BUT I DECIDED TO WRITE AN OBJECT EDITOR SO THAT 
  7. 'I COULD RELEASE IT TO YOU LOT OUT THERE, BECAUSE ITS GREAT FUN!!! 
  8. '
  9. '
  10. 'THE ROUTINE CAN HANDLE ANY NUMBER OF POINTS, AND CAN ZOOM IN AND OUT
  11. 'AND FREELY ROTATE IMAGES AROUND  AND INTO THE SCREEN. 
  12. 'NB.THE OBJECT EDITOR LIMITS YOU TO 50 POINTS
  13. '
  14. 'IT SUPPORTS WIRE FRAME GRAPHICS, AND SCALES THE OBJECTS WITH  
  15. 'A PERSPECTIVE ROUTINE.
  16. '
  17. '
  18. 'THERE ARE ALREADY A FEW OBJECTS THAT I HAVE DESIGNED ON HERE
  19. 'TO CHANGE THE OBJECT YOU SHOULD GO THROUGH THIS LISTING UNTIL 
  20. 'YOU COME TO THE OBJECT DATA, THEN CHOOSE AN OBJECT. NEXT TO THE REM 
  21. 'STATEMENT OF THE NAME YOULL SEE A NUMBER IN BRACKETS CHANGE  THE NPS
  22. 'VARIABLE TO THIS NUMBER                                          ~~~  
  23. '
  24. 'YOULL FIND THE LINE SETTING NPS IS SEPARATED FROM THE REST OF THE PROGRAM 
  25. 'WITH THE LINE: 'POINTS NUMBER VARIABLE' WRITTEN ABOVE IT! 
  26. '
  27. 'NOW GO BACK AND REMOVE THESE ' SYMBOLS FROM THE FRONT OF THE DATA STATEMENTS
  28. 'OF THE OBJECT YOU WANT TO SEE.
  29. 'NOW FIND THE OLD OBJECT ( THE ONE WITHOUT ' BY THE DATA STATEMENTS) 
  30. 'AND PUT ' SYMBOLS OR REM IN FRONT OF THEM 
  31. '
  32. 'YOU CAN NOW RUN THE PROGRAM!!!   HAVE FUN!!!! 
  33. '
  34. '
  35. 'PS.  YOU CAN ENTER YOUR OWN OBJECTS TOO!! YOU CAN MAKE 2 DIMENSIONAL
  36. 'OBJECTS WITH MY OBJECT EDITOR PROGRAM. JUST ENTER YOUR OWN DATA STATEMENTS
  37. 'IN THE SAME WAY THAT I HAVE, AND REMEMBER TO SET NPS TO THE NUMBER OF 
  38. 'POINTS THAT THE OBJECT EDITOR SAYS ARE IN YOUR OBJECT.
  39. 'ALWAYS ENTER THEM IN THE ORDER THAT THE OBJECT EDITOR GIVES YOU 
  40. 'AND MAKE SURE THEY ARE IN X,Y,Z ORDER.  
  41. '
  42. 'IF YOU WANT 3D OBJECTS, IM AFRAID YOULL HAVE TO DESIGN THEM ON PAPER! 
  43. 'THIS ROUTINE CAN HANDLE THEM,IF YOU KNOW WHAT YOUR DOING. 
  44. '(SORRY BUT I DONT FANCY CODING A 3D OBJECT EDITOR! WAIT FOR AMOS 3D!) 
  45. '
  46. '
  47. '
  48. 'THESE PROGRAMS ARE SHAREWARE!!! IF YOU LIKE AND USE THEM, PLEASE SEND 
  49. 'A POSTAL ORDER FOR A SMALL AMOUNT (ABOUT 2 QUID) TO:
  50. '
  51. '
  52. '
  53. '              NICK  
  54. '              44 HEOL-Y-GWRGAN
  55. '              MARGAM
  56. '              PORT TALBOT   
  57. '              WEST GLAM 
  58. '              SA13 2DG
  59. '
  60. 'AND YOULL GET MY NEXT PROGRAM OR DEMO OR WHATEVER!
  61. '
  62. '
  63. '
  64. Screen Open 1,320,240,2,Lowres
  65. Screen Open 0,320,40,2,Lowres
  66. Curs Off 
  67. Flash Off 
  68. Cls 0
  69. Centre "VECTOR OBJECT SHOWER BY NICK!"
  70. Print 
  71. Centre "{Q ZOOM IN} {A ZOOM OUT}"
  72. Print 
  73. Centre "{O ROTATE X} {P ROTATE Y} {0-QUIT}"
  74. Set Rainbow 0,1,250,"(1,1,15)(37,-1,15)","(3,1,15)(19,-1,15)","(2,1,15)(8,-1,15)"
  75. Rainbow 0,0,80,250
  76. Screen 1
  77. Double Buffer 
  78. Autoback 0
  79. Screen Swap 
  80. '
  81. '       points number variable 
  82. '
  83.                NPS=29
  84. '
  85. '
  86. '
  87. Curs Off : Paper 0 : Cls 
  88. Dim X#(NPS),Y#(NPS),Z#(NPS)
  89.   XIDGIN#=100 : YRIGIN#=100
  90. ZEDSCALE#=0.002
  91. XPOSITION#=-70 : YPOSITION#=0 : ZPOSITION#=150
  92. For I=1 To NPS
  93.    Read X#(I),Y#(I),Z#(I)
  94. Next I
  95. '
  96. '                                  OBJECT DATA 
  97. '
  98. '  objects check numbers in brackets for no of points! 
  99. '
  100. 'ENTER YOUR OWN OBJECT DATA HERE!!!!!!!! 
  101. '
  102. '
  103. 'amos logo(29) 
  104. Data -14,4,0,-14,-3,0,-10,-3,0,-10,4,0,-10,0,0
  105. Data -14,0,0,-14,4,0,-9,4,0,-9,-3,0,-5,-3,0
  106. Data -7,-3,0,-7,0,0,-7,-3,0,-5,-3,0,-5,4,0
  107. Data -4,4,0,-4,-3,0,0,-3,0,0,4,0,-4,4,0
  108. Data 5,4,0,5,0,0,1,0,0,1,-3,0,5,-3,0
  109. Data 13,-3,0,10,-4,0,10,-2,0,13,-3,0
  110. '
  111. '
  112. '
  113. 'CRAP SHAPE(6) 
  114. '
  115. 'Data -7,-8,0,-7,0,0,3,0,0,6,-4,0,3,-8,0,-7,-8,0 
  116. '
  117. '
  118. 'letter c (14) 
  119. 'Data -2,1,0,-1,2,0,1,2,0,2,1,0,2,0,0
  120. 'Data 1,0,0,1,1,0,-1,1,0,-1,-2,0,2,-2,0
  121. 'Data 1,-3,0,-1,-3,0,-2,-2,0,-2,1,0
  122. '
  123. 'nick(21)
  124. '
  125. 'Data -5,2,0,-5,-2,0,-5,2,0,-3,-2,0,-3,2,0 
  126. 'Data -3,-2,0,-2,-2,0,-2,2,0,-2,-2,0,1,-2,0
  127. 'Data -1,0,0,1,2,0,-1,0,0,1,-2,0,4,-2,0
  128. 'Data 2,0,0,4,2,0,2,0,0,2,2,0,2,-2,0 
  129. 'Data -5,-2,0
  130. '
  131. 'tandem (39)   
  132. 'Data -2,3,0,-1,4,0,1,4,0,2,3,0,1,2,0
  133. 'Data -1,2,0,-2,3,0,-1,3,1,1,3,1,2,3,0 
  134. 'Data 1,4,0,1,3,1,1,2,0,1,-2,0,1,2,0 
  135. 'Data 2,3,0,1,3,1,-1,3,1,-1,4,0,-1,3,1 
  136. 'Data -1,2,0,-1,-2,0,-2,-3,0,-1,-4,0,-1,-3,-1
  137. 'Data -2,-3,0,-1,-2,0,1,-2,0,2,-3,0,1,-4,0 
  138. 'Data 1,-3,-1,2,-3,0,1,-4,0,-1,-4,0,-1,-3,-1 
  139. 'Data -1,-2,0,1,-2,0,1,-3,-1,-1,-3,-1
  140. '
  141. 'hexagon (13)  
  142. '
  143. 'Data -3,1,0,-2,2,0,-1,3,0,1,3,0,2,2,0 
  144. 'Data 3,1,0,3,-1,0,2,-2,0,1,-3,0,-1,-3,0 
  145. 'Data -2,-2,0,-3,-1,0,-3,1,0 
  146. '
  147. '
  148. 'diamond(14) 
  149. 'Data -2,0,0,0,2,0,2,0,0,0,-2,0,-2,0,0 
  150. 'Data 0,0,2,2,0,0,0,0,-2,-2,0,0,0,2,0
  151. 'Data 0,0,-2,0,-2,0,0,0,2,0,2,0
  152. '
  153. '
  154. 'space ship v1 (17)
  155. '
  156. 'Data -10,-5,-2,-4,3,-2,0,5,-2,4,3,-2,10,-5,-2 
  157. 'Data -10,-5,-2,-4,-5,2,4,-5,2,10,-5,-2,4,3,-2 
  158. 'Data 0,0,2,-4,3,-2,0,5,-2,0,0,2,-4,-5,2 
  159. 'Data 4,-5,2,0,0,2 
  160. '
  161. 'give way (5)
  162. '
  163. 'Data 0,0,0,0,2,0,-1,3,0,1,3,0,0,2,0 
  164. '
  165. 'house(23) 
  166. '
  167. 'Data -10,5,0,10,5,0,10,-5,0,-10,-5,0,-10,5,0
  168. 'Data -10,5,10,10,5,10,10,5,0,10,5,10,10,0,15
  169. 'Data -10,0,15,-10,5,10,-10,-5,10,-10,-5,0,-10,-5,10 
  170. 'Data 10,-5,10,10,-5,0,10,-5,10,10,5,10,10,0,15,10,-5,10 
  171. 'Data -10,-5,10,-10,0,15 
  172. '
  173. 'disk(19)
  174. 'Data -7,7,0,7,7,0,7,-7,0,-7,-7,0,-7,7,0 
  175. 'Data -6,7,0,-6,0,0,6,0,0,6,7,0,7,7,0
  176. 'Data 7,-7,0,4,-7,0,4,-2,0,-4,-2,0,-4,-7,0 
  177. 'Data 0,-7,0,0,-4,0,-2,-4,0,-2,-7,0
  178. '
  179. '
  180. 'tree (10) 
  181. 'Data 0,0,0,0,1,0,-1,1,0,0,3,0,1,1,0 
  182. 'Data 0,1,0,0,1,1,0,3,0,0,1,-1,0,1,0 
  183. '
  184. 'big space ship (24) 
  185. 'Data -4,4,-5,4,4,-5,5,3,-5,6,0,-5,2,-2,-5 
  186. 'Data -2,-2,-5,-1,0,15,1,0,15,2,-2,-5,-2,-2,-5 
  187. 'Data -6,0,-5,-5,3,-5,-4,4,-5,-1,0,15,1,0,15 
  188. 'Data 4,4,-5,5,3,-5,1,0,15,-1,0,15,-5,3,-5 
  189. 'Data -6,0,-5,-1,0,15,1,0,15,6,0,-5
  190. '
  191. 'space ship2(19) 
  192. '
  193. 'Data -7,-5,-1,-7,0,-1,-2,1,-1,0,10,-1,2,1,-1
  194. '
  195. 'Data 7,0,-1,7,-5,-1,-7,-5,-1,-2,-5,-1,-2,1,-1 
  196. '
  197. 'Data 0,1,3,2,1,-1,2,-5,-1,0,-5,3,0,1,3
  198. '
  199. 'Data 0,10,-1,-2,1,-1,-2,-5,-1,0,-5,3
  200. '
  201. 'OBJECT1(8)
  202. 'Data -5,-5,0,0,5,0,5,-5,0,0,0,10,-5,-5,0,5,-5,0,0,5,0,0,0,10
  203. 'OBJECT2(10) 
  204. '
  205. 'Data 0,5,0,5,0,0,0,-5,0,-5,0,0,0,5,0,0,0,10,0,-5,0,5,0,0,0,0,10,-5,0,0
  206. '
  207. 'cube (16) 
  208. 'Data -5,-5,-5,-5,-5,5,5,-5,5,5,-5,-5,-5,-5,-5 
  209. 'Data -5,5,-5,-5,5,5,-5,-5,5,-5,5,5,5,5,5
  210. 'Data 5,-5,5,5,5,5,5,5,-5,5,-5,-5,5,5,-5,-5,5,-5 
  211. '
  212. '
  213. Gosub DDRAWBODY
  214. DDEGREE#=11.25
  215. RRADIAN#=DDEGREE#*2*Pi#/360
  216. Do 
  217. 'For J=1 To 100
  218.    Gosub SPIN
  219. 'If zposition#>60 Then zposition#=zposition#-2 
  220.    XPOSITION#=20
  221.    YPOSITION#=20
  222.    Cls 
  223.    Gosub DDRAWBODY
  224. 'Next J
  225. Loop 
  226. '
  227. '
  228. Cls 
  229. Gosub DDRAWBODY
  230. SPIN:
  231. 'Repeat  
  232. K$=Inkey$
  233. 'Until K$<>""
  234. For I=1 To NPS
  235. K$=Upper$(K$)
  236. If(K$="Q") and(ZPOSITION#>60) Then ZPOSITION#=ZPOSITION#-1
  237. If(K$="A") and(ZPOSITION#<160) Then ZPOSITION#=ZPOSITION#+1
  238. If K$="O" Then Gosub TURN
  239. If K$="P" Then Gosub TURN2
  240. If K$="0" Then End 
  241. Clear Key 
  242. Next I
  243. Return 
  244. '
  245. TURN:
  246. C#=X#(I)*Cos(RRADIAN#)-Y#(I)*Sin(RRADIAN#)
  247. Y#(I)=X#(I)*Sin(RRADIAN#)+Y#(I)*Cos(RRADIAN#)
  248. X#(I)=C#
  249. Return 
  250. '
  251. TURN2:
  252. C#=Y#(I)*Cos(RRADIAN#)-Z#(I)*Sin(RRADIAN#)
  253. Z#(I)=Y#(I)*Sin(RRADIAN#)+Z#(I)*Cos(RRADIAN#)
  254. Y#(I)=C#
  255. Return 
  256. '
  257. DDRAWBODY:
  258. XABSOLX#=X#(1)+XPOSITION# : YABSOLX#=Y#(1)+YPOSITION# : ZABSOLX#=Z#(1)+ZPOSITION#
  259. Gosub PERSPECTIVE
  260. XOLD#=XSCR# : YOLD#=YSCR#
  261. For I=2 To NPS
  262.    XABSOLX#=X#(I)+XPOSITION# : YABSOLX#=Y#(I)+YPOSITION# : ZABSOLX#=Z#(I)+ZPOSITION#
  263.    Gosub PERSPECTIVE
  264.    Draw XOLD#,YOLD# To XSCR#,YSCR#
  265.    XOLD#=XSCR# : YOLD#=YSCR#
  266. Next I
  267. Screen Swap 
  268. Wait Vbl 
  269. Return 
  270. '
  271. PERSPECTIVE:
  272. XSCR#=XABSOLX#/(ZABSOLX#*ZEDSCALE#)
  273. YSCR#=YABSOLX#/(ZABSOLX#*ZEDSCALE#)
  274. XSCR#=XSCR#
  275. YSCR#=YSCR#
  276. Return 
  277. '