home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8504b.d64 / stellation2 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  4KB  |  125 lines

  1. 10 REM "STELLATION"
  2. 20 REM  BY RICHARD L. RYLANDER     12/5/84
  3. 30 :
  4. 40 GR=49378    :REM GRAPHIK MODUS
  5. 50 TX=49411    :REM TEXT MODUS
  6. 60 BO=53280    :REM RAHMENFARBE
  7. 70 :
  8. 80 REM  STYLE PARAMETERS
  9. 90 POKE 839,1  :REM SKALIERUNG (3:4)
  10. 100 POKE 871,0 :REM FACETTENRAENDER (0=NACHZEICHNEN, 1=LOESCHEN)
  11. 110 SH=838     :REM SCHATTIERUNG (0=RANDOM, 1=HALBTON)
  12. 120 EG=868     :REM RANDFLAG (0=NORMAL, 1=LINIEN AM RAND HINZUFUEGEN)
  13. 130 :
  14. 140 REM   FUNKTIONS ADRESSEN
  15. 150 CL=51979   :REM BITMAP LOESCHEN
  16. 160 CO=52001   :REM COLOR MAP FUELLEN
  17. 170 FC=52052   :REM SCHATTIERTE FACETTEN ZEICHNEN
  18. 180 KS=53081   :REM SORTIERROUTINE
  19. 190 :
  20. 200 XC=160:YC=120  :REM ZENTRIERUNGSKOORDINATEN
  21. 210 :
  22. 220 PRINT"[147]***************************************"
  23. 230 PRINT"* KLEINER STERNFOERMIGER DODEKAHEDRON *"
  24. 240 PRINT"***************************************"
  25. 250 PRINT" SCHATTIERUNG:"
  26. 260 PRINT" R=RANDOM, H=HALBTON"
  27. 270 INPUT" IHRE WAHL     H[157][157][157]";A$
  28. 280 POKE SH,0:IF A$="H" THEN POKE SH,1
  29. 290 PRINT" RAND-STIL :"
  30. 300 PRINT" N - NORMAL":PRINT" E - ECKENBETONUNG"
  31. 310 PRINT" W - DRAHTGITTER"
  32. 320 INPUT" IHRE WAHL     N[157][157][157]";A$
  33. 330 POKE EG,0:WI=0:IF A$="N" THEN 360
  34. 340 POKE EG,1:IF A$="W" THEN WI=-1
  35. 350 :
  36. 360 PRINT" LESE SCHEITEL DATEN"
  37. 370 VN=32:DIM P%(VN-1,2)
  38. 380 FOR N=0 TO VN-1:READ P%(N,0),P%(N,1),P%(N,2):NEXT
  39. 390 :
  40. 400 PRINT" GEBEN SIE X, Y, UND Z WINKEL EIN"
  41. 410 PRINT"       (WINKEL IN GRAD)"
  42. 420 INPUT X,Y,Z
  43. 430 J=3.14159265/180:X=X*J:Y=Y*J:Z=Z*J
  44. 440 X0=COS(Y)*COS(Z)-SIN(X)*SIN(Y)*SIN(Z):X1=COS(Y)*SIN(Z)+SIN(X)*SIN(Y)*COS(Z)
  45. 450 X2=-COS(X)*SIN(Y):Y0=-COS(X)*SIN(Z):Y1=COS(X)*COS(A):Y2=SIN(X)
  46. 460 Z0=SIN(Y)*COS(Z)+SIN(X)*COS(Y)*SIN(Z)
  47. 470 Z1=SIN(Y)*SIN(Z)-SIN(X)*COS(Y)*COS(Z):Z2=COS(X)*COS(Y)
  48. 480 PRINT" ROTATIONSBERECHNUNG"
  49. 490 FOR N=0 TO VN-1
  50. 500 X=P%(N,0):Y=P%(N,1):Z=P%(N,2)
  51. 510 P%(N,0)=X0*X+X1*Y+X2*Z:P%(N,1)=Y0*X+Y1*Y+Y2*Z:P%(N,2)=Z0*X+Z1*Y+Z2*Z:NEXT
  52. 520 :
  53. 530 FA=60: REM  ANZAHL DER FACETTEN
  54. 540 DIM F%(FA/2,2),SH(FA/2),Z%(FA/2),K%(FA/2)
  55. 550 PRINT" LESE VERBINDUNGSDATEN              "
  56. 560 VF=-1: REM  VF = ANZAHL DER SICHTBAREN FACETTEN
  57. 570 FOR N=1 TO FA
  58. 580 VF=VF+1
  59. 590 FOR I=0 TO 2 :READ F%(VF,I):NEXT
  60. 600 REM  BERECHNUNG DER NORMALENVEKTOREN
  61. 610 Z=(P%(F%(VF,2),0)-P%(F%(VF,1),0))*(P%(F%(VF,0),1)-P%(F%(VF,1),1))
  62. 620 Z=Z-(P%(F%(VF,0),0)-P%(F%(VF,1),0))*(P%(F%(VF,2),1)-P%(F%(VF,1),1))
  63. 630 IF Z=<0 THEN 720:REM  FACETTE NICHT SICHTBAR
  64. 640 X=(P%(F%(VF,2),1)-P%(F%(VF,1),1))*(P%(F%(VF,0),2)-P%(F%(VF,1),2))
  65. 650 X=X-(P%(F%(VF,0),1)-P%(F%(VF,1),1))*(P%(F%(VF,2),2)-P%(F%(VF,1),2))
  66. 660 Y=(P%(F%(VF,2),2)-P%(F%(VF,1),2))*(P%(F%(VF,0),0)-P%(F%(VF,1),0))
  67. 670 Y=Y-(P%(F%(VF,0),2)-P%(F%(VF,1),2))*(P%(F%(VF,2),0)-P%(F%(VF,1),0))
  68. 680 NC=SQR(X*X+Y*Y+Z*Z):REM  LAENGE DES NORMALENVEKTORS
  69. 690 SH(VF)=26*(2*Z+X+Y)/NC
  70. 700 SH(VF)=(SH(VF)+64)*(SH(VF)+64)/256:REM SCHATTIERUNG
  71. 710 GOTO 730
  72. 720 VF=VF-1
  73. 730 NEXT
  74. 740 :
  75. 750 PRINT" BERECHNUNG DER DARSTELLUNGSGROESSE"
  76. 760 Y=0:FOR N=0 TO VN-1:IF ABS(P%(N,1))>Y THEN Y=ABS(P%(N,1))
  77. 770 NEXT:S=119/Y
  78. 780 FOR N=0 TO VN-1:P%(N,1)=S*P%(N,1)+YC:P%(N,0)=S*P%(N,0)+XC:NEXT
  79. 790 :
  80. 800 :
  81. 810 FOR N=0 TO VF
  82. 820 Z%(N)=(P%(F%(N,0),2)+P%(F%(N,1),2)+P%(F%(N,2),2))/3:NEXT
  83. 830 :
  84. 840 PRINT" SORTIERUNG DER FACETTEN"
  85. 850 POKE 140,VF
  86. 860 K%(0)=K%(0):POKE 251,PEEK(71):POKE 252,PEEK(72)
  87. 870 Z%(0)=Z%(0):POKE 253,PEEK(71):POKE 254,PEEK(72)
  88. 880 SYS(KS)
  89. 890 :
  90. 900 REM ZEICHNE FACETTEN
  91. 910 SYS(GR):SYS(CO):SYS(CL):POKE BO,1
  92. 920 FOR N=0 TO VF:FA=K%(N)
  93. 930 IF WI THEN SH(FA)=64
  94. 940 X0=P%(F%(FA,0),0):Y0=P%(F%(FA,0),1):X1=P%(F%(FA,1),0):Y1=P%(F%(FA,1),1)
  95. 950 X2=P%(F%(FA,2),0):Y2=P%(F%(FA,2),1)
  96. 960 SYS(FC),X0,Y0,X1,Y1,X2,Y2,SH(FA)
  97. 970 NEXT
  98. 980 POKE198,0
  99. 990 GET A$:IF A$="" THEN 990
  100. 1000 SYS(TX):POKE BO,14:END
  101. 1010 :
  102. 1020 REM    SCHEITELDATEN
  103. 1030 DATA 1000,618,0, 1000,-618,0, -1000,618,0, -1000,-618,0
  104. 1040 DATA 0,1000,618, 0,1000,-618, 0,-1000,618, 0,-1000,-618
  105. 1050 DATA 618,0,1000, -618,0,1000, 618,0,-1000, -618,0,-1000
  106. 1060 DATA 618,0,236, 618,0,-236, -618,0,236, -618,0,-236
  107. 1070 DATA 236,618,0, -236,618,0, 236,-618,0, -236,-618,0
  108. 1080 DATA 0,236,618, 0,-236,618, 0,236,-618, 0,-236,-618
  109. 1090 DATA 382,382,382, 382,382,-382, 382,-382,382, 382,-382,-382
  110. 1100 DATA -382,382,382, -382,382,-382, -382,-382,382, -382,-382,-382
  111. 1110 :
  112. 1120 REM    VERBINDUNGSDATEN
  113. 1130 DATA 0,12,13, 0,13,25, 0,25,16, 0,16,24, 0,24,12
  114. 1140 DATA 1,12,26, 1,26,18, 1,18,27, 1,27,13, 1,13,12
  115. 1150 DATA 2,15,14, 2,14,28, 2,28,17, 2,17,29, 2,29,15
  116. 1160 DATA 3,14,15, 3,15,31, 3,31,19, 3,19,30, 3,30,14
  117. 1170 DATA 4,16,17, 4,17,28, 4,28,20, 4,20,24, 4,24,16
  118. 1180 DATA 5,17,16, 5,16,25, 5,25,22, 5,22,29, 5,29,17
  119. 1190 DATA 6,19,18, 6,18,26, 6,26,21, 6,21,30, 6,30,19
  120. 1200 DATA 7,18,19, 7,19,31, 7,31,23, 7,23,27, 7,27,18
  121. 1210 DATA 8,20,21, 8,21,26, 8,26,12, 8,12,24, 8,24,20
  122. 1220 DATA 9,21,20, 9,20,28, 9,28,14, 9,14,30, 9,30,21
  123. 1230 DATA 10,23,22, 10,22,25, 10,25,13, 10,13,27, 10,27,23
  124. 1240 DATA 11,22,23, 11,23,31, 11,31,15, 11,15,29, 11,29,22
  125.