home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff280.lzh
/
CM
/
cm.doc
< prev
next >
Wrap
Text File
|
1989-11-20
|
10KB
|
304 lines
CM
Celestial Mechanics Simulator
Version 1.0
W. John Guineau
3 Royal Crest Drive #9
Marlboro, Mass 01752
(508) 485-6233
NOTICE
------
I have placed this software in the Public Domain with the
condition that all the files remain together and that I remain
listed as the original author. This software may not be used for
commercial purposes or to make money in any way without expressed
written permission from the author (me). I'm including the source
code so if you make any significant modifications please concider
sending me a copy at the above address. I'd also be interested in
any interesting saved setup files you create.
This is my first Amiga program so I welcome any comments at all.
I wrote this program as both a way to learn the Amiga environment
and in response to a conversation I had with a friend on Celestial
Mechanics.
What is it?
-----------
CM is a Celestial Mechanics simulation tool. It allows you to
construct a layout of Masses (called Bodys) and specify various
parameters concerning both the bodys and the simulation. All input
is accomplished through a fully intuitionized interface. CM then
proceeds to animate the bodys according to the laws of gravational
attraction ( F = Gm1m2/r^2 ). Setups may be saved to disk to allow
you later re-inact interesting scenarios.
Getting Started
---------------
CM can be run from either the CLI or from workbench by double
clicking it's icon. In order for you to get a quick start, I've
included some interesting setup files (described below). Just run
CM and select LoadData from the FILE menu. Enter the name of the
saved simulation you want and hit return (or click OK in the file
requestor).
Next select START from the CONTROL menu. That's it!
Here are the included setups:
3BODY.DAT - This is a setup of 3 bodys (no kidding!). One is a
very (relativly) massive body which is not moving. The other two
are much smaller and have initial velocities - one in a close
orbit, the other in a larger orbit. What makes this interesting is
that on several occasions the two get close enough to affect
eachothers orbit. Then after about t=1400, they swap orbits.
FIXED1.DAT - This is an example of a feature in creating bodys
where they can be "fixed" in place (i.e. not allowed to move).
While this is not possible in reality, it makes for some interesting
effects (and gives a good control on single body experiments).
FIXED2.DAT - Another fixed body example. Watch this one around
t=1700!
SVEM.DAT - This stands for SUN, VENUS, EARTH, MARS. It's a scale
experiment of (guess what) the inner planets. While the masses,
velocities and distances are correct, I don't quite have the
initial directions just right (although it does indeed take the
Earth 365 days to complete an orbit, as well as the other planets
are quite close to thier orbital period). This is a good example for
scaling time and distance.
SMVEM.DAT - Another like above. SUN, MERCURY, VENUS, EARTH, MARS.
How to use CM
-------------
CM is really pretty easy to use. You first need to decide on what
you want to simulate. Then decide on an appropriate scale for
both distance and time.
The visible universe is made up of 635 units in the x direction
and 377 units in the y direction. I say units instead of pixels
because CM lets you assign any arbitrary scale to the distance
between each pixel. Calculations are based on the scaled distance and on
scaled time. CM lets you specify an arbitrary amount of time for each
iteration of the simulation.
The non-visible universe extends virtually infinetly in all
directions (2D space).
To see how scaling is useful concider the 3BODY.DAT example
(described above). It has a distance scale of 1:1 and a time scale
of 0.5. Which brings up another useful variable to set - G. G is the
gravational constant and is, in reality, equal to 6.67E-11. CM
lets you specify what G is for the calculations. 3BODY.DAT uses
just 6.67 for G, pretty amazing, huh? :-0.
Now contrast 3BODY's settings with those of SVEM.DAT. This is a
real scale model. The distance scale is 1E6, which just happens
to work nicely for distances in KiloMeters from the SUN to the inner
planets. The time scale is 8.64E4. What is that?? It's the number of
seconds in one day. G is set to 6.67E-8, which is appropriate
for the KiloMeter scaling of distance. Since the units for G are
based on 1 second, time scaling must also be based on 1 second -
hence, 1 day in seconds. This means that for each iteration of the
simulation, one day goes by and by placing the Earth body 150
units (pixels) away from the SUN's location, it's really 150E6
kilometers away (it's correct mean distance). Ij addition to
distance and time, you should use units for Mass and Velocity
that are consistant with everything. Get the idea?
The best things to do are get a good book with real numbers and
experiment. Eventually you'll get the feel for the scaling and
how it affects the simulation.
The Menus
---------
With that simple look at things, heres what the menu's do.
There are 3 main menus in the title bar: FILE, EDIT and CONTROL.
The FILE menu has the following items.
ABOUT - Read this one and send mail to the address listed or just
call to say hi! I'd love to hear from anyone using this
program with questions, comments or whatever.
LoadData
- This allows you to load in a previously saved setup file.
The files are pretty simple. You can type or edit them but
beware that CM expects the EXACT format they get saved in. Type
one out and see!
Selecting this item pops up a simple file requestor asking
for the name.
SaveData
- This allows you to save a setup. It's a good idea to
save an experiment BEFORE you run it. That way you can
reload it to modify the initial parameters.
Selecting this item pops up a simple file requestor asking
for the name.
SaveScreen
- This item will dump the current screen to an IFF ILBM
file (for use with DPaint or whatever). CM uses a hires
interlaced, 8 color custom screen.
This menu item is currently not implemented. If anyone is
interested I will put it in. Actually I'll do it sometime
anyway just to learn how!
EXIT - Exits CM. The window close gadget does the same thing.
The EDIT menu has the following items.
Setup - This pops up a requestor to allow you to set all the
simulation parameters. The parameters are described
below.
Create - This puts CM into the Create Body mode. Once selected
a small window will open at the top of the screen showing
the current mouse coordinates (properly scaled). When the
mouse is where you want a body, click the left button.
A body requestor will pop up to let you fill in the
information for that body. The body requestor is described
below. You can create up to 10 bodys.
Modify - Once you've created bodys (or loaded them in from a file)
you can step through them to view/modify their parameters.
You can also delete a body this way.
ClearScreen
- Just clears the screen. Useful when trails have
cluttered the display.
ClearBodys
- Clears all body information. A requestor will ask you if
you really want to do this.
The CONTROL menu has the following items.
Start - Starts a simulation. You must have bodys created to use
this item.
Stop - Stops a simulation in progress. Setup info can then be
changed, bodys can be modified or saved and the simulation
restarted.
The setup requestor allows you to change the following.
G - The gravational constant. Entered as a floating point
number such as 6.67e-11.
Sim Time
- This is the time scaling for each iteration of the
simulation. Specified as a floating point number.
Real Time
- Normally the simulator runs at full speed. Putting a value
other than zero here inserts a real delay, in miliseconds,
between each iteration. Maybe useful for 68020/68030 users.
Specified as an integer.
Units/Pixel
- This is the distance scale. It specifies the distance
between pixels. Specified as a floating point number.
TrailLength
- This decides how a bodys trail is dealt with.
A value of ZERO means leave no trail.
A value of -1 means leave an infinite trail.
A value between 1 and 300 specifies the number of
past locations to save. This creates worm like
trails behind a body.
ShowTime
- If YES, the integer number of iterations will be displayed
during the simulation. This number can then be multiplied
by the time scale for real time. In some cases, such as
with the SVEM and SMVEM examples, it can be read directly
as days.
The Body requestor allows you to specify the following
characteristics of a body.
NAME - This is a name you give it (such as SUN, EARTH etc.)
MASS - This is it's mass. Entered as a floating point number.
The units you use should be consistant with the rest
of the setup information (i.e. G, scaling, velocity etc)
VELOCITY
- The scalar velocity of the body. Floating point. Should
be dimensionally consistant with the rest of the setup
info.
DIRECTION
- The angle of the velocity in degrees. 0 degrees is due
east with 90 strait up, 180 due west and 270 due south.
Integer number.
COLOR - Clicking on a color will set the bodys color.
FIXED - YES means the body can't move. While this is not "real",
it can be useful for experimentation.
The bodys current location is displayed below the FIXED gadget.
In both the SETUP and the BODY requestors, clicking on OK accepts
the values, RESET sets them to their defaults and CANCEL quits the
operation without any changes. In addition the BODY requestor will
display DELETE in place of CANCEL during a MODIFY operation.
Selcecting this will delete the body from the simulation.