This is a relativistic orbital precession demo. See below for documentation. If you are using Netscape Navigator 4.x on Windows 9x, another version probably will work better for you. The applet below works best with OS/2. To start the simulation, adjust the "Eccentricity" and "Relativity Strength" scroll bars to the desired positions, then click on the "Start" button. Note that an eccentricity of exactly zero yields a circular orbit (not very interesting). To change the eccentricity or "relativity strength", click the "Stop" button, make the changes, then click "Start". Clicking "Explode" causes two more scroll bars to pop up. Using these scroll bars, you can input the number and relative velocity of additional satellites to add, sort of showing the new orbits of the pieces if the original satellite exploded. This Java applet traces the orbit of one star ("satellite") about another, taking into account relativistic effects, e.g. if the orbited "star" is really a black hole. The interesting thing is supposed to be that the relativistic warping of space-time causes the orbit to precess. I had a good time figuring out the math; briefly, we are using numerical integration to solve "Einstein's equation":
p'' + p = gamma + epsilon*p*p
where p = 1/r and r is the radius of the orbiting body from the center
of the system. Differentiation is with respect to the angle theta
(true anomaly), where (r, theta) are the polar coordinates of the
orbiting body. The constants in the equation are defined as
epsilon = 3*mu/(C*C) where C is the speed of light
gamma = mu/(c*c)
mu = k*k*(M1 + M2) where k*k = G = the Gravitational constant
(k is called the Gaussian gravitation constant) and M1 and M2 are
the two masses in the system. For this program, we are assuming
that the masses of all orbiting bodies are negligible compared to
the black hole they are orbiting about. This simplifies things.
c is the length of the vector which is the cross product of the
radius vector (of the orbiting body, with the black hole at the
origin) and the velocity vector:
_ _ _ c = r x v This is a translation and extension of the BASIC program appearing in the "Astronomical Computing" section of Sky & Telescope, October 1995, page 88. See that article for more information, and see Sky & Telescope's list for all their astronomical BASIC programs. In translating, I left the Runge-Kutta integration unchanged, and some of the graphics remain similar. Entry of data is obviously via scroll bars in the JAVA version. Here is a brief explanation of the parameters:
You'll notice the "EXPLODE" button becomes enabled when you start. It gives you the option to add orbital bodies by firing particles from the original body. However many additional satellites you specify, the program fires them off at equally-spaced angles. Choose the number with the "No. of new pieces" pop-up scroll bar. Their speed is determined by a parameter you specify with the other pop-up scroll bar. This speed is specified as a fraction of the original orbital speed (which happens to be the speed at apastron); default is one tenth the original speed. The idea is that we're tracking debris from an explosion, e.g. of an anti-satellite weapon or of comet S-L 9. Click on "OK" when the parameters suit you. I have noticed some platforms don't handle this multiple-thread situation too well. One common platform only draws when the screen is hidden after an "EXPLODE"! Another handles that just fine, but the "Simulation Speed" must be set very low for it to cooperate and "explode" just where you press the button. Ah, the portability of Java! For another astronomy-related JAVA applet, see my solar oscillation adaptation -- static or dynamic version. |