'Apollo8.bas Re-Entry SCREEN 12: CLS : WINDOW (-1500, 4300)-(1500, 6550) 'VGA pi = 3.14159: ERad = 6378: PSET (-2000, 600) FOR a = -.3 TO .3 STEP .03 'draw earth surface y = ERad * COS(a): x = ERad * SIN(a): LINE -(x, y), 1: NEXT a ai = 500 / ERad 'angle interval for range markers each 500 km FOR a = -ai * 2 TO ai * 2 STEP ai: c = COS(a): s = SIN(a) FOR rd = 6428 TO 6578 STEP 50 'height markers each 50 km PSET (rd * s, rd * c), 15 'mark point NEXT rd: NEXT a: COLOR 15: LOCATE 1, 42 PRINT "<- 150 km altitude": LOCATE 1, 14: PRINT "<- 500 km. ->" LOCATE 25, 43: PRINT "5 Time , mins 10" FOR xc=-1100 TO 1390 STEP 40:LINE (xc,4800)-STEP(0,30), 15:NEXT FOR xc=-1100 TO 1420 STEP 240:LINE(xc,4800)-STEP(0,60),15: NEXT FOR xc=-1100 TO 1300 STEP 1200:LINE(xc,4800)-STEP(0,90),15:NEXT COLOR 12:LOCATE 5,53:PRINT"Specific Energy":row=6 'energy scale FOR n=0 TO -60 STEP -10:LOCATE row,4:PRINT n:row= row + 2: NEXT FOR yc=6150 TO 5150 STEP -150:LINE(-1450,yc)-STEP(30,0),12:NEXT COLOR 10: LOCATE 6, 53: PRINT "Velocity, km/s" 'velocity scale LOCATE 11, 11: PRINT "10": LOCATE 17, 12: PRINT "5" FOR yc=4800 TO 6000 STEP 100:LINE(-1200,yc)-STEP(30,0),10: NEXT FOR yc= 5300 TO 5800 STEP 500:LINE(-1200,yc)-STEP(50,0),10:NEXT COLOR 9: LOCATE 7, 53: PRINT "Deceleration, g": row = 12 FOR n=4 TO 1 STEP -1:LOCATE row, 67:PRINT n;"g":row=row+3: NEXT FOR yc=4800 TO 5920 STEP 225:LINE(1150,yc)-STEP(50, 0), 9: NEXT COLOR 13: LOCATE 8, 53: PRINT "Altitude" FOR yc=4800 TO 5700 STEP 100:LINE(1300,yc)-STEP(30,0), 13: NEXT COLOR 13:LOCATE 10,72:PRINT"100":LINE(1280,5800)-(1330,5800),13 gc = .0098*ERad*ERad: w = 11: t = 0 'gravity constant, velocity rd = ERad + 112 'radius to CM position ang1 = 9 /57.3: x = rd * SIN(ang1): y = rd *COS(ang1) 'position ang2 = 5 /57.3: u = -w * COS(ang2): v = w * SIN(ang2) 'velocity st! = TIMER: dc = 1.17: : f1 = 50: f2 = 20000 DO: t = t + 1 'loop at 1 second intervals DO: LOOP UNTIL TIMER > st!: st! = TIMER + .1 'delay, variable rd2 = x * x + y * y: rd = SQR(rd2) 'radius ag = gc / rd2: h = rd - ERad 'gravity acceleration ax = -ag * x / rd: ay = -ag * y / rd 'gravity accel components an = ATN(v / u): s = SIN(an): c = COS(an) 'velocity direction ad = dc * w2 * EXP(-h / 10) '(negative) accel. due to drag adx = ad * c: ady = ad * s 'components of drag acceleration arx = adx + ax: ary = ady + ay 'components totals u = u + arx: v = v + ary: x = x + u: y = y + v 'new vel./pos. w2 = u *u + v *v: w =SQR(w2): E = w2 / 2 - gc / rd 'vel/energy PSET (x, y), 15: tp = t * 4 - 1100 'mark position. Hor. coord. PSET (tp, 6150 + E * 15), 12: PSET (tp, w * 100 + 4800), 10 PSET (tp, (rd - ERad) * 10 + 4800), 13 'plots PSET (tp, ad * 22500 + 4800), 9 IF t MOD 10 = 0 THEN 'each 10 sec, redraw acceleration polygon LINE (-500, 6200)-STEP(fax, fay), 0:LINE -STEP(fadx, fady), 0 LINE (-500, 6200)-STEP(fu,fv), 0 'first obliterate old one... ang = ATN(x / y): sa = SIN(ang): ca = COS(ang) fu = u * f1: fv = v * f1: fax = ax * f2: fay = ay * f2 fadx = adx * f2: fady = ady * f2 LINE (-500, 6200)-STEP(fax, fay), 7: LINE -STEP(fadx,fady), 1 LINE (-500, 6200)-STEP(fu, fv), 2 '...and draw new one END IF IF t MOD 60 = 10 THEN 'each minute draw polygon at bottom LINE (t * 6 - 1100, 4600)-STEP(fax, fay), 7 LINE -STEP(fadx,fady),1:LINE(t * 6 -1100,4600)-STEP(fu,fv), 2 END IF LOOP UNTIL h < 17 'stop at 17 km altitude DO: LOOP WHILE INKEY$ = "" 'deploy parachutes --< END >--