REM PROGRAM D8_CI NC = 100 DIM X(NC + 1), Z(NC + 1), R(NC + 2) DIM XOLD(NC + 1), ZOLD(NC + 1), ROLD(NC + 2) SCREEN 2: SCREEN 12 LINE (0, 0)-(640, 10), 10, BF LINE (0, 0)-(10, 480), 10, BF LINE (630, 0)-(640, 480), 10, BF LINE (0, 470)-(640, 480), 10, BF COLOR 13: LOCATE 3, 30: PRINT "MAKING A CIRRUS CLOUD": SLEEP 2 LOCATE 6, 17: PRINT "CIRRUS CLOUDS ARE TRAILS OF FALLING ICE CRYSTALS" LOCATE 7, 31: PRINT "TWISTED BY THE WINDS" SLEEP 2: COLOR 10: LOCATE 9, 5: : PRINT "MOST CIRRUS CLOUDS CONSIST OF" SLEEP 2: LOCATE 10, 8: PRINT "1. A LEADING HEAD IN WHICH ICE CRYSTALS ARE MANUFACTURED" SLEEP 2: LOCATE 11, 8: PRINT "2. A TRAILING, COMMA-SHAPED TAIL OF FALLING ICE CRYSTALS" SLEEP 2: COLOR 12: LOCATE 13, 5: PRINT "THE HEAD USUALLY LEADS THE TAIL BECAUSE" LOCATE 14, 11: PRINT "WIND SPEED DECREASES DOWNWARD FROM CLOUD LEVEL" SLEEP 2: COLOR 11: LOCATE 16, 5: PRINT "THE TAIL OFTEN RESEMBLES A COMMA THAT LEVELS OFF AT BOTTOM BECAUSE" LOCATE 17, 11: PRINT "CRYSTALS EVAPORATE AS THEY FALL" LOCATE 18, 11: PRINT "AND FALL MORE SLOWLY AS THEY EVAPORATE" SLEEP 2: COLOR 14: LOCATE 20, 5: PRINT "OTHER FEATURES" SLEEP 2: LOCATE 21, 8: PRINT "1. TAILS SWIRL WHEN WIND DIRECTION CHANGES WITH HEIGHT" SLEEP 2: LOCATE 22, 8: PRINT "2. TAILS BEND WHEN WIND SPEED CHANGES ABRUPTLY WITH HEIGHT" SLEEP 2: LOCATE 23, 8: PRINT "3. LINES AND BANDS OF CIRRUS FORM FROM WAVES OR JET CONTRAILS" SLEEP 2: COLOR 12: DO WHILE INKEY$ = "" LOCATE 27, 27: PRINT "HIT ANY KEY TO START PROGRAM": SLEEP 1 TT = TIMER + .25 DO UNTIL TIMER > TT LOCATE 27, 27: PRINT " " LOOP LOOP CLS : COLOR 15 WINDOW (0, 0)-(640, 480) COLOR 13: LOCATE 2, 28: PRINT "GROWING AND MOVING CIRRUS" COLOR 14: LOCATE 6, 65: PRINT "FAST WIND SPEED" LOCATE 15, 65: PRINT "SLOW WIND SPEED" COLOR 11: LOCATE 7, 65: PRINT "FAST FALL SPEED" LOCATE 16, 65: PRINT "SLOW FALL SPEED" LOCATE 18, 31: PRINT "CRYSTALS EVAPORATE": COLOR 15 LINE (60, 100)-(580, 100), 6 LINE (0, 60)-(640, 60), 6 LINE (60, 100)-(0, 60), 6 LINE (580, 100)-(640, 60), 6 PAINT (320, 80), 6 RANDOMIZE TIMER FOR II = 1 TO 40 ZT = (60 - II) * RND + 103 Z2 = ZT - 103 XT = 100 + RND * 440 HUEMT = 7 + INT(II / 21) LINE (XT - Z2, 101)-(XT, ZT), HUEMT LINE (XT + Z2, 101)-(XT, ZT), HUEMT LINE (XT - Z2, 101)-(XT + Z2, 101), HUEMT PAINT (XT, ZT - 2), HUEMT NEXT II PI = 3.141593 UTERM = -.5 CU = .006 NDT = 4500 DT = .04 Z1 = 400 RC = 6: DRDT = .002 RCLD = 3 * RC IDT = 200 CX = IDT * CU FOR I = 1 TO NC Z(I) = Z1 X(I) = 30 + CX * Z(I) * DT * (I - 1) R(I) = RC NEXT I CIRCLE (30, 410), RCLD, , 0, PI LINE (30 - RCLD, 410)-(30 + RCLD, 410) PAINT (30, 420) FOR K = 1 TO NDT CIRCLE (30 + K * DT * CU * 400, 410), RCLD, , 0, PI / 2 CIRCLE (30 + K * DT * CU * 400, 410), RCLD, 0, PI / 2, PI FOR JJ = 0 TO 4 LINE (12 - JJ + K * DT * CU * (395 - 40 * JJ), 398 - 40 * JJ)-(15 - JJ + K * DT * CU * (395 - 40 * JJ), 395 - 40 * JJ), 14 LINE (12 - JJ + K * DT * CU * (395 - 40 * JJ), 392 - 40 * JJ)-(15 - JJ + K * DT * CU * (395 - 40 * JJ), 395 - 40 * JJ), 14 LINE (K * DT * CU * (395 - 40 * JJ), 400 - 40 * JJ)-(K * DT * CU * (395 - 40 * JJ), 390 - 40 * JJ), 0 NEXT JJ IC = 1 + INT(K / IDT) FOR I = 1 TO IC R(I) = RC - DRDT * (K - IDT * (I - 1)) W = UTERM * R(I) U = Z(I) * CU Z(I) = Z(I) + W * DT X(I) = X(I) + U * DT IF ROLD(I) > 0 THEN PAINT (XOLD(I), ZOLD(I)), 0 CIRCLE (XOLD(I), ZOLD(I)), ROLD(I), 0 END IF IF R(I) > 0 THEN CIRCLE (X(I), Z(I)), R(I), 11 PAINT (X(I), Z(I)), 11 END IF REM WHILE INKEY$ = "": WEND NEXT I FOR I = 1 TO IC XOLD(I) = X(I) ZOLD(I) = Z(I) ROLD(I) = R(I) NEXT I NEXT K