REM PROGRAM D9_ACOR REM THIS PROGRAM IS DESIGNED TO ILLUSTRATE THE CORIOLIS FORCE REM BY SHOWING BOTH INERTIAL AND ROTATING FRAMES OF REFERENCE DIM XTR(500), YTR(500), RTR(500), THTR(500) NS = 30 DIM RS(NS), XS(NS), YS(NS), THS(NS) DIM XSOLD(NS), YSOLD(NS) 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, 27: PRINT "VIEWING THE CORIOLIS FORCE": SLEEP 2 COLOR 11: LOCATE 6, 17: PRINT "OBJECTS THAT MOVE STRAIGHT IN AN ABSOLUTE SENSE": SLEEP 2 LOCATE 7, 20: PRINT "CURVE WITH RESPECT TO THE ROTATING EARTH": SLEEP 2 COLOR 10: LOCATE 10, 31: PRINT "FRAMES OF REFERENCE": SLEEP 2 COLOR 9: LOCATE 12, 5: PRINT "VIEWPOINT FROM SPACE (NONROTATING OR INERTIAL)": SLEEP 2 LOCATE 13, 8: PRINT "1. THE EARTH IS SEEN TO ROTATE": SLEEP 2 LOCATE 14, 8: PRINT "2. BALLS ARE SEEN TO MOVE STRAIGHT": SLEEP 2 LOCATE 15, 8: PRINT "3. BALLS LEAVE CURVED TRAILS ON THE EARTH": SLEEP 2 COLOR 6: LOCATE 17, 5: PRINT "VIEWPOINT FROM EARTH (ROTATING)": SLEEP 2 LOCATE 18, 8: PRINT "1. THE UNIVERSE APPEARS TO SPIN": SLEEP 2 LOCATE 19, 8: PRINT "2. MOVING BALLS APPEAR TO CURVE": SLEEP 2 LOCATE 20, 8: PRINT "3. BALLS LEAVE CURVED TRAILS ON THE EARTH": SLEEP 2 COLOR 14: LOCATE 23, 5: PRINT "BOTH VIEWPOINTS WILL BE SHOWN": SLEEP 2 LOCATE 24, 8: PRINT "FIRST, THE VIEWPOINT FROM SPACE": SLEEP 2 LOCATE 25, 8: PRINT "SECOND, THE VIEWPOINT FROM EARTH": SLEEP 2 COLOR 15 DO WHILE INKEY$ = "" LOCATE 27, 26: PRINT "HIT ANY KEY TO START PROGRAM": SLEEP 1 TT = TIMER + .25 DO UNTIL TIMER > TT LOCATE 27, 26: PRINT " " LOOP LOOP CLS : COLOR 15 WINDOW (-320, -240)-(320, 240) NC = 12 PI = 3.141592: DRC = PI / 180 RC = 4: RE = 200: RU = 500 C1 = .25: REM FLATTENING OF CORIOSEL DELTH = PI / 6 DT = 1 / 3600 DTH = PI * DT VB = 5 * RE * DT: REM IN ROTATING FRAME START SLOWLY DYB = 10 * RE * DT * C1 RCIN = VB / DTH: THB = PI RPOS = RE DIM A(210) CIRCLE (0, 0), RC, NC PAINT (0, 0), NC GET (-1.5 * RC, -1.5 * RC)-(1.5 * RC, 1.5 * RC), A CLS XB = 0: YBI = -RE * C1 YB = YBI XBOLD = XB: YBOLD = YB PUT (XB, YB), A, XOR CLS FOR ROT = 1 TO 2 CIRCLE (0, -RE * C1 / 2), RU, 1, , , C1 PAINT (0, 0), 1 CIRCLE (0, 0), RE + 1, 6, PI, 2 * PI, C1 CIRCLE (0, -RE * C1 / 2), RE + 1, 6, PI, 2 * PI, C1 LINE (-RE - 2, -RE * C1 / 2)-(-RE - 2, 0), 6 LINE (RE + 1, -RE * C1 / 2)-(RE + 1, 0), 6 PAINT (0, -RE * 5 * C1 / 4), 6 CIRCLE (0, 0), RE + 1, 2, , , C1 PAINT (0, 0), 2 RANDOMIZE TIMER FOR I = 1 TO NS: REM POSITION STARS RS(I) = RE * 1.5 + RND * (RU - RE * 1.5) THS(I) = RND * 2 * PI NEXT I IF ROT = 1 THEN LINE (0, 1.1 * RE * C1)-(0, 2.1 * RE * C1), 12 LINE (0, -1.6 * RE * C1)-(0, -2.6 * RE * C1), 12 LOCATE 3, 30: PRINT "VIEWPOINT FROM SPACE" LOCATE 8, 11: PRINT "BALLS MOVE IN STRAIGHT LINE -- PARALLEL TO THE RED LINES" ELSE LOCATE 3, 30: PRINT "VIEWPOINT FROM EARTH" LOCATE 6, 29: PRINT "IN NORTHERN HEMISPHERE" LOCATE 7, 9: PRINT "BALLS CURVE RIGHT (CLOCKWISE) -- UNIVERSE ROTATES CLOCKWISE" FOR I = 1 TO 6 THTI = I * DELTH X(I) = RE * COS(I * DELTH) Y(I) = RE * SIN(I * DELTH) * C1 LINE (-X(I), -Y(I))-(X(I), Y(I)) SS = -SGN(Y(I)) LINE (X(I) * SS, -ABS(Y(I)) - 1)-(X(I) * SS, -ABS(Y(I)) - RE * C1 / 2) NEXT I END IF LOCATE 26, 5: PRINT "BALLS CURVE WITH RESPECT TO EARTH --" SELECT CASE ROT REM ****** ROUTINE FOR INERTIAL FRAME OF REFERENCE CASE 1 FOR I = 1 TO NS: REM DRAW STARS XS(I) = RS(I) * COS(THS(I)) YS(I) = (RS(I) * SIN(THS(I)) - RE / 2) * C1 CIRCLE (XS(I), YS(I)), 1 PAINT (XS(I), YS(I)) NEXT I FOR TH = 0 TO 2 * PI STEP DTH IF CTR = 4 AND CTR2 = 0 THEN LOCATE 26, 44: PRINT "AND LEAVE CURVED TRAILS ON EARTH" CTR2 = 1 END IF IF CTR = 5 THEN 500 K = K + 1 IF CTR = 4 AND (INT(K / 10) = K / 10) THEN NTR = NTR + 1 RTR(NTR) = ABS((YBOLD) / C1 - 2 * RB) IF YBOLD > 0 THEN THTR(NTR) = PI / 2 ELSE THTR(NTR) = 3 * PI / 2 END IF FOR I = 1 TO 6 LINE (-XOLD(I), -YOLD(I))-(XOLD(I), YOLD(I)), 2 SS = -SGN(YOLD(I)) LINE (XOLD(I) * SS, -ABS(YOLD(I)) - 1)-(XOLD(I) * SS, -ABS(YOLD(I)) - RE * C1 / 2), 6 NEXT I IF YBOLD < RE * C1 THEN PUT (XBOLD, YBOLD), A, XOR FOR I = 1 TO 6 XOLD(I) = X(I) YOLD(I) = Y(I) LINE (-X(I), -Y(I))-(X(I), Y(I)) THTI = I * DELTH X(I) = RE * COS(TH + I * DELTH) Y(I) = RE * SIN(TH + I * DELTH) * C1 SS = -SGN(Y(I)) LINE (X(I) * SS, -ABS(Y(I)) - 1)-(X(I) * SS, -ABS(Y(I)) - RE * C1 / 2) NEXT I IF CTR > 3 THEN FOR JJ = 1 TO NTR FOR LL = 27.5 * NTR TO 2000 STEP NTR: NEXT LL: REM THIS KEEPS SPINNING CONSTANT CIRCLE (XTR(JJ), YTR(JJ)), 1, 2: REM ERASE OLD POSITIONS THTR(JJ) = THTR(JJ) + DTH XTR(JJ) = RTR(JJ) * COS(THTR(JJ)) YTR(JJ) = RTR(JJ) * SIN(THTR(JJ)) * C1 CIRCLE (XTR(JJ), YTR(JJ)), 1, 12 NEXT JJ ELSE FOR QQ = 1 TO 2000: NEXT QQ END IF REM BALL MOVING ROUTINE IF YB > RE * C1 THEN YB = YBI CTR = CTR + 1 PUT (XB, YB), A, XOR END IF PUT (XB, YB), A, XOR XB = 0: YB = YB + DYB XBOLD = XB: YBOLD = YB NEXT TH 500 REM LEAVING THE INERTIAL REFERENCE FRAME DO WHILE INKEY$ = "" COLOR 12: LOCATE 28, 25: PRINT "HIT ANY KEY FOR VIEW FROM EARTH": SLEEP 1 TT = TIMER + .25 DO UNTIL TIMER > TT LOCATE 28, 25: PRINT " " LOOP LOOP CLS : COLOR 15: GOTO 1000 CASE 2 REM ****** ROUTINE FOR ROTATING FRAME OF REFERENCE REM PARTICLE PATH IS AN INERTIA CIRCLE WITH R = V/F:F = 2*DTH CTR = 0: CTR2 = 0 RPOS = RE RANDOMIZE TIMER FOR I = 1 TO NS RS(I) = RE * 1.5 + RND * (RU - RE * 1.5) THS(I) = RND * 2 * PI NEXT I FOR TH = O TO 2 * PI STEP DTH IF CTR = 1 AND CTR2 = 0 THEN LOCATE 26, 44: PRINT "AND LEAVE CURVED TRAILS ON EARTH" LOCATE 8, 2: COLOR 10: PRINT "EACH BALL MOVES FASTER THAN THE PRIOR -- AND HAS LESS TIME TO CURVE": COLOR 15 CTR2 = 1 END IF IF CTR = 5 THEN 1000 REM STAR ERASE FOR I = 1 TO NS CIRCLE (XSOLD(I), YSOLD(I)), 1, 1 PAINT (XSOLD(I), YSOLD(I)), 1 NEXT I REM BALL ERASE IF STILL ON EARTH NEED EQUATION FOR RPOS IF RPOS < RE THEN PUT (XBOLD, YBOLD), A, XOR CIRCLE (XBOLD, YBOLD - 2 * RB), 1, 12: REM LEAVE TRACE END IF REM BALL DRAW IF RPOS > RE THEN YB = YBI: XB = 0: THB = PI: REM INITIAL POSITION RPOS = RE CTR = CTR + 1 VB = VB * 2: REM SPEED UP EACH SUCCESSIVE BALL RCIN = VB / DTH PUT (XB, YB), A, XOR END IF XBOLD = XB: YBOLD = YB PUT (XB, YB), A, XOR THB = THB - DTH XB = RCIN * (1 + COS(THB)) YB = (RCIN * SIN(THB) - RE) * C1 RPOS = SQR(XB ^ 2 + (YB / C1) ^ 2) REM STAR DRAW FOR I = 1 TO NS THS(I) = THS(I) - DTH XSOLD(I) = XS(I): YSOLD(I) = YS(I) XS(I) = RS(I) * COS(THS(I)) YS(I) = (RS(I) * SIN(THS(I)) - RE / 2) * C1 CIRCLE (XS(I), YS(I)), 1 PAINT (XS(I), YS(I)) NEXT I NEXT TH END SELECT 1000 NEXT ROT