Chapter 5 – Solar System Orbits (Pluto’s Orbit)

Orrery, simulates the scale and relative movement of the planets about the Sun
Bode’s Law
Kepler’s Orbits, demonstrates the first two of Kepler’s Laws
Orbit Foci, plotting the second focus
Comet Orbit, eccentric orbits
Halley’s Comet, depicts one complete orbit, 1948-2023
Pluto’s Orbit, plots the relative positions of Pluto and Neptune from 1880-2128, one complete orbit for Pluto
Solar Apex, corkscrew motion of a planet towards the Solar Apex.

Pluto’s Orbit

On 21st January 1979, Pluto relinquished to Neptune the dubious honour of being the most remote planet from the Sun by crossing within Neptune’s orbit. Pluto will regain the ‘title’ in March 1999 by once more crossing Neptune’s orbit — this time in an outward direction.

A collision between the two planets is unlikely as Pluto’s orbit is inclined 17° to the general plane of the planets including Neptune. During this twenty-year period, Pluto will pass up to 10 AU (10 astronomical units = 10 x Earth to Sun distance) above Neptune’s orbit — a gap almost big enough to contain the complete orbit of the giant planet Jupiter. The planets Pluto and Neptune are themselves well separated — Neptune last overtook Pluto in the 1890s as each moved ponderously along its orbital track in periods of 165 years and 248 years respectively.

Screen display
The following program PLOTs to scale the relative positions of Pluto and Neptune from the year 1880 to 2128 — one complete orbit for Pluto. Both a plan and a section are displayed of the overlapping orbits, with a tiny flashing CIRCLE in the centre representing the Earth’s orbit (at the very centre of which is, of course, the Sun). The passing years are recorded in the top right of the screen and Pluto is PLOTted in a green pixel (a darker shade in monochrome) on a black background (PAPER 0: BORDER 0:) for clarity. The display PAUSEs briefly to PRINT six significant comments against specific dates relevant to the progress of the two planets.

Pluto’s elliptical orbit
Neptune’s orbit has the lowest eccentricity of all the planets, being a near-perfect circle. Because of this, its program requirements are minimal — just Line 340 both to calculate and PLOT its orbit, where variable f is used to increment the PLOT position.

In contrast, the bulk of the program from Line 110 is used to calculate Pluto’s elliptical orbit, which has the highest eccentricity of the major planets with a value of 0.25. Pluto moves faster when closest to the Sun (by wider spacing of the PLOT positions) but, because this presentation is to scale and overlaps Neptune’s orbit, it may not be obvious at this time.

Lines 300 and 310, both of which PLOT Pluto’s orbital progress, appear almost identical except for the expression at the end of Line 310:

“…y/200 + 10 ”

where /200 effectively compresses the y or vertical axis by a factor of 200 so that, instead of a second full ellipse being PLOTted, it is reduced to a near edge-on view of the orbit as shown in the lower part of the display.

Experiments with Pluto display
Once the program has been RUN a few times, using the screen COPY (Figure 5.12) to check that it works correctly, SAVE the program on tape. Now try changing some of the variables to see what effect it has. (These amendments will invariably corrupt an accurate presentation which is why the program should be SAVEd first.)

Figure 5.12
The orbits of Pluto and Neptune from two viewpoints.


The following variables can be tested for effect:
xx   x coordinate (horizontal) of the Sun
yy   y coordinate (vertical) of the Sun
f     position and increment steps to PLOT Neptune (Lines 110 and 340)
h    STEP value to main FOR/NEXT loop
t     FOR/NEXT main loop starting at value 0 (3 o’clock start)
w    relative eccentricity of Pluto’s orbit

The value 13 (Lines 300 and 310) and the value 55 (Line 340) control the radius of each planet’s orbit.

10 REM Pluto’s Orbit
20 LET t=0: BORDER 0: PAPER 0: INK 7: CLS : GO SUB 400
30 PRINT INK 5;”Pluto’s Orbit”
40 PRINT AT 11,0;”plan”;TAB 16;”Sun”;TAB 25; INK 5;”Pluto”
50 PRINT AT 15,14;”Neptune”
60 PRINT ”””edge-on”‘” view”
70 LET xx=140: LET yy=92
80 PLOT xx-55,0: DRAW 110,20,.1: DRAW -110,-20,.1
90 CIRCLE FLASH 1;xx,yy,2
100 CIRCLE FLASH 1;xx,10,2
110 LET f=12.3: LET w=28.7
120 LET h=.8: LET g=1e6
130 LET x=g/1000: LET y=0
140 LET i=h/4: LET v=0
150 LET r=x: LET s=y
160 LET x=x+i*v: LET y=y+i*w
170 GO SUB 260
180 LET x=r: LET y=s: LET o=h/2
190 LET v=v+o*b: LET w=w+o*c
200 GO SUB 300
210 FOR t=0 TO 155 STEP h
220 LET x=x+h*v: LET y=y+h*w
230 GO SUB 260
240 LET v=v+h*b: LET w=w+h*c
250 GO SUB 300: NEXT t: STOP
260 LET e=x*x+y*y: LET d=SQR e
270 LET a=-g/e: LET b=a*x/d
280 LET c=a*y/d: RETURN
300 PLOT INK 4;x/13+xx,y/13+yy
310 PLOT INK 4;x/13+xx,y/200+10
320 LET tt=1880+INT (t*1.6): PRINT AT 0,20;”year=”;tt
340 PLOT BRIGHT 1;xx+COS f*55,yy+SIN f*55: LET f=f+.05
360 IF tt=1888 OR tt=1929 OR tt=1979 OR tt=1999 OR tt=2040 OR tt=2127 THEN GO SUB 500
410 LET b$=”1889 – Neptune ‘overtakes’ Pluto”
420 LET c$=”1930 – Pluto discovered”
430 LET d$=”Pluto inside Neptune’s orbit Jan 1979″
440 LET e$=”Pluto outside Neptune’s orbit Mar 1999″
450 LET f$=”Neptune completes orbit: 164 yrs”
460 LET g$=”Pluto completes orbit: 248 yrs”
470 DIM a$(40): RETURN
500 PRINT BRIGHT 1;AT 1,0;(b$ AND tt=1888)+(c$ AND tt=1929)+
(d$ AND tt=1979)+(e$ AND tt=1999)+(f$ AND tt=2040)+
(g$ AND tt=2127)
510 PAUSE 250: PRINT AT 1,0;a$: RETURN


Chapter 4 – Satellites (Satellite Orbit)

Launch your own satellites
Earth Orbit, put a satellite into orbit about the Earth
Satellite Orbit, how to put a satellite into orbit around any planet.

Satellite Orbit

This program is based on the Earth Orbit program, but is extended to cope with modelling a satellite orbit around any planet, or even our Moon.

In addition to INPUTting the start height and initial velocity of the satellite, it is necessary to ENTER details of the planet itself, ie the diameter (in kilometres) and relative mass compared to Earth (Earth = 1). This information is included in the initial display (Figure 4.4) but you need not be confined to it. Various data should be tested including exotic features like tiny diameters and excessive mass. You should not expect the program to cope with all permutations, particularly for the ‘massive’ planet. Insufficient computation plus very rapid orbiting may produce strange results.

Figure 4.4
Sample worlds for a satellite to orbit.

The program recognises if a satellite is in a ‘parabolic’ or ‘hyperbolic’ orbit (open-ended) and thus lost to space. Similarly the Spectrum BEEPs a warning if the initial injection velocity proves too low and the satellite crashes on the surface of the planet.

The program specifically recognises one planet (Saturn) and DRAWs in the encircling ring system if this name is ENTERed in the N$. For the sake of clarity, it is advisable to place your satellite outside the Saturnian ring system.

The CLS command is not used, except against a new planet, and so multiple orbits can be overlaid upon one another until you are satisfied with a particular orbit. The information contained at the corners of the display, starting with the top left, is planet data, orbital period individually in minutes, hours and days and, at the bottom of the screen, the elapse time in minutes, x and y relative coordinate positions and the initial height and velocity in kilometres. An option to COPY the screen to the ZX printer is included. See Figures 4.5 and 4.6 for examples.

The program is an excellent way of gaining insight into the behaviour of, for example, the moons of Jupiter or Saturn, where a stronger gravitational field operates than on Earth.

To demonstrate, Jupiter’s moon Io is a similar distance from the centre of Jupiter as is our Moon from the centre of the Earth. Io orbits Jupiter in 1.8 days and our Moon takes 27.3 days (mean sidereal periods) to orbit the Earth. Try testing some set examples with data from a text book but do not expect any great accuracy as the results should be regarded as informative rather than precise.

Figure 4.5
The program recognises ‘Saturn’ and draws a ring system. Unfortunately, this satellite is launched from within the rings with insufficient velocity and crashes immediately on to the planet.


Figure 4.6
Third time lucky with these orbit attempts around a small mythical world. One satellite is lost to space, one crashes on the far side of the planet.


10 REM Satellite Orbit
20 GO SUB 1000
30 LET n$=a$(n)
40 LET k=d(n): LET m=m(n)
50 IF n150000 OR k9999 THEN GO TO 140
170 LET disk=(rd/125*16)*z
180 IF disk>40 THEN LET z=z/2: GO TO 170
190 IF n$=”Saturn ” AND disk*2.5>40 THEN LET z=z/2: GO TO 170
200 PRINT PAPER 4;AT 1,0;n$
210 PRINT INK 5;”diam=”;k;”km”‘”grav=”;m;”xE”
220 LET tm=.125/z: LET h=tm
230 LET w=vl: LET x=hi+rd
240 LET ho=x: LET y=0: LET v=0
250 FOR n=0 TO 255 STEP 2
260 PLOT 140,n-100
270 PLOT n,40: NEXT n
280 PRINT AT 16,0;”-x”;AT 16,30;”+x”;AT 3,16;”+y”
290 PRINT AT 19,23;”initial”;AT 20,19;”hgt=”;hi;”km”;AT 21,19;”vel=”;INT w;”km/mn”
300 INK 5
310 FOR j=0 TO PI/2 STEP .1
320 LET px=INT (SIN j*disk)
330 LET py=INT (COS j*disk)
340 PLOT 140-px,40+py
345 DRAW 0,-py*2
350 PLOT 140+px,40+py
355 DRAW 0,-py*2: NEXT j
360 CIRCLE 140,40,disk: INK 9
380 IF n$=”Saturn ” THEN FOR n=1.5 TO 2.5 STEP .2: CIRCLE 140,40,disk*n: NEXT n
390 LET r=x: LET x=x+h/4*v
400 LET s=y: LET y=y+h/4*w
410 GO SUB 580
420 LET x=r: LET v=v+2/4*b
430 LET y=s: LET w=w+h/4*c
440 GO SUB 610
450 FOR t=0 TO 4e4 STEP tm
460 LET x=x+h*v: LET y=y+h*w
470 GO SUB 580
480 IF x>0 AND y>2*ho THEN PRINT FLASH 1; PAPER 2;AT 0,0;”Velocity too high-LOST to space “: GO TO 510
490 IF d>rd THEN GO TO 530
500 PRINT FLASH 1; PAPER 3;AT 0,0;p$;AT 0,0;”Velocity too low-CRASH in “;t;”mn ”
505 PLOT FLASH 1;xx,yy
510 FOR n=45 TO -30 STEP -15: BEEP .5,n-30: NEXT n
520 PAUSE 50: PLOT FLASH 0;xx,yy: GO TO 740
530 LET v=v+h*b: LET w=w+h*c
540 PAPER 0
550 GO SUB 610
560 NEXT t
570 GO TO 130
580 LET e=x*x+y*y: LET d=SQR e
590 LET a=-g/e: LET b=a*x/d
600 LET c=a*y/d: RETURN
610 PRINT AT 19,0;”time=”;t;”mn ”
620 PRINT “x ax=”;INT x;”km ”
630 PRINT “y ax=”;INT y;”km ”
640 LET xx=x/125*16*z+140
650 LET yy=y/125*16*z+40
660 IF x<0 AND y<0 THEN GOTO 690
670 IF xx>255 OR xx<-255 OR yy>175 THEN LET z=z/2: CLS : PRINT AT 0,0;p$;AT 0,0;”Re-scale=”;z: GO TO 170
680 PLOT xx,yy
690 FOR n=0 TO .5 STEP .02: BEEP n/4,n/5: NEXT n
700 LET hr=INT (t/.3)/100: LET dy=INT (t/.3/24)/100
710 PRINT PAPER 6;AT 0,0;”Half orbit plot-period=”;t*2;”mn”
720 PRINT AT 1,22;” “;AT 2,22;” ”
730 PRINT AT 1,22;”=”;hr;”hr”;AT 2,22;”=”;dy;”dy”
740 PRINT #0; INK 9; PAPER 4;”z=COPY:p=new Planet:o=new Orbit ”
750 PAUSE 0: IF INKEY$=”o” THEN PRINT AT 0,0;p$: GO TO 130
770 RUN
1010 LET zz=1: DIM p$(32)
1015 DIM a$(12,7): DIM d(12): DIM m(12)
1020 DATA “Moon”,3476,.165
1030 DATA “Mercury”,4878,.377
1040 DATA “Venus”,12104,.90
1050 DATA “Earth”,12756,1
1060 DATA “Mars”,6794,.379
1070 DATA “Pallas”,532,.022
1080 DATA “Jupiter”,142800,2.69
1090 DATA “Saturn”,120000,1.19
1100 DATA “Uranus”,52000,.93
1110 DATA “Neptune”,48400,1.22
1120 DATA “Pluto”,3000,.2
1125 PRINT ” PAPER 6;” Satellite Modelling Program “”
1130 PRINT PAPER 5;”No Name Diam(km) Mass(Earth=1)”
1140 FOR n=1 TO 11: READ a$(n),d(n),m(n)
1150 PRINT (” ” AND n<10);n;” “;
1155 PRINT a$(n);TAB 12;d(n);TAB 23;m(n)
1160 NEXT n: PRINT PAPER 6;”12 ??? ??? ??? ”
1170 PRINT ‘”Enter Planet no”
1180 INPUT n: IF n12 THEN GO TO 1180