What it does
Superballs is a screen saver that simulates spheres moving in two dimensions under classical Newtonian mechanics. Don't be put off by that description, it's actually a colourful screen saver that is amazingly configurable - allowing you to waste huge amounts of time getting the balls to behave in strange ways. There is no help file but I include a readme.txt file which will help you to get the most out of the program should time be an expendable asset.
I wrote this originally in around 1993 in Borland C++ version 3.1. I later ported it to MicroSoft Visual C++ and loaded up images of all the planets and most of the significant moons. In 1998, I had a disk crash and lost the new version together with all the images. Not backed up I'm afraid. I'm not sure what flavour or version of C++ this one is in, but it definitely doesn't have all those pretty planets and moons like Jupiter, Io, Callisto and Ganymede.
Click the image below to download a compressed file called balls.zip which is 245 Kb.
Cautions and Pointers
This program has been checked with a recent version of Norton Anti-Virus. However I do not accept any responsibility for its failure to run nor its suitability for any particular purpose. In no event shall I be liable for any special, indirect or consequential damages.
Help with settings
NOTE: All numbers must be entered as whole numbers - no fractions. Do not go above 32000 or below 0 for any value.
- Number Of Balls. This is exactly what it says. DO NOT EXCEED 50 BALLS OR THE PROGRAM WILL CRASH!!! Don't enter less than 1 either.
- Number Of Big Balls. The balls come in two sizes, big and little, which you can configure independently. The number of little balls is the total number of balls minus the number of big balls.
- Big Ball Random Element. This determines how much of the diameter of the big balls is randomly determined measured in screen dots (pixels).
- Big Ball Fixed Element. This determines how much of the diameter of the big balls is predetermined. If you enter 50 as the big ball random element and 30 as the big ball fixed element, then the diameter of your balls will vary between 30 and 80.
- Little Ball Random Element. This determines the random element of the diameter of the little balls.
- Little Ball Fixed Element. The determines the fixed element of the diameter of the little balls. Little ball diameter works exactly the same way as big balls.
- Bounce Off Wall Factor. This determines how much of the energy of the balls is absorbed by the walls when they strike them.
- X Dimension. This determines the width, in screen dots (pixels), of the box that the balls can move in. You can set this to be larger than the screen size although you will obviously not see your balls when they are off the edge of the screen until they come back again.
- Y Dimension. This determines the height, in screen dots (pixels), of the box that the balls can move in.
- Gravitational Constant. This number will determine the pull of gravity that the balls exert onto eachother. The gravitational pull is proportional to the volume times the density (see below) times the gravitational constant and inversely proportional to the distance squared. That means that the higher the gravitational constant is the more gravitational pull will be exerted.
- Velocity Random Factor. This determines the initial speed of the balls when the program starts up (for techies, it's a measure of the initial kinetic energy). The higher the value, the more chaotic the system will appear.
- Penetration Intolerance. This is a measure of how close the balls can get to eachother before they merge, fracture or bounce off eachother. A small bug in the program often allows them to occasionally appear to move through eachother without interacting.
- Density. This is how dense the balls are. In most cases, they all have the same density, big and small except when negligible mass is selected.
- Number Of Stars. This determines the number of stars that appear when the balls are not moving over the desktop.
- Depth Of Colour. This only applies when 3D balls are not selected and determines the number of colours used to draw each ball.
- Size Of Colour Palette. This only applies when 3d balls are not selected and determines the number of colours available to the program to draw each ball with.
- Gravity. Check this box to enable gravity, uncheck it to disable it.
- Centre On First Big Ball. This will centre the whole screen on the first big ball drawn. You can get some weird effects by using this, but it's best use is to do solar system simulations.
- Balls Leave Trace. This is a lot of fun and works best when 3D balls are not selected. Try it!
- Bouncy Balls. This makes the balls bounce off eachother. If you do not select this option the balls will pass right through eachother.
- Soft 'n' Sticky Balls. Selecting this will allow the balls to merge into one another to create a new ball, usually of a different colour. How likely the balls are to merge rather than bounce depends on the penetration intolerance.
- Fragile Balls. Selecting this will allow the balls to fracture when they collide. How likely the balls are to break rather than bounce depends on the penetration intolerance. You can select both soft 'n' sticky and fragile balls. I fear that this option is not implemented in this version of the program :-(
- Move Over Desktop. This will make the balls to move over the desktop - that means they will move over your windows like Internet Explorer or Microsoft Word!
- StarField Backdrop. Will make the number of stars set in the "Number Of Stars" option get drawn. If not selected the balls will move over a black screen (provided "Move Over Desktop" is not selected.
- Draw Box Surround. This will draw lines around the available space that you have given your balls to move in with the X and Y Dimensions. Obviously if the space is larger than the screen, you won't see these lines.
- Circular Orbits. This makes all the balls trace a circular orbit around the first ball. Used with Negligible Mass and Centre On First Big Ball enables you to do solar system simulations.
- Negligible Mass. This gives all the balls, bar the first, negligible mass and thus negligible gravitational pull on other balls. This is important for solar system simulations because otherwise you would be able to get a whole solar system on the screen without the "planets" ruining it for eachother. In the real solar system the planets are tiny and very far away from the sun.
- Planetary Balls. This makes the first big ball spin round and around. On modern computers it goes much to fast to be any fun.
- 3d Balls. This makes for great looking balls but you have to set high colour in the settings tab for best results.
For a solar system simulation set 1 big ball. Have at least 3 little balls, check centre on first big ball, negligible mass, gravity and circular orbits. Make sure the gravitational constant is at least 1.
There are lots of other things to try - I'll leave that to you.
Have fun and don't forget to give something to the charities named at http://www.mult-sclerosis.org/programs.html
Mail me at firstname.lastname@example.org if you need any help.