Bifröst Physics is a 2D-Physics simulator and teleteaching tool. It was my capstone project in undergraduate physics.
You can find the users guide here.
- Naturally the source is pretty nasty for old code! Feel free to have a look and reuse any bits you like. Download it here.
Comments, bug reports, and suggestions are welcome at contact AT armanfrasier DOT com (Though I don't update it anymore, so it'll be of little use!)
- Fixed a bug where using the hotkeys didn't properly disable the menu.
- Fixed a bug where the finecircles trigger was only being set for every-other entity.
- Fixed an issue where the gui windows looked funky. (How descriptive!)
- Added an Entity Inspector window. Right click on an entity at any time to view its real-time position, velocity, and other information.
- Added an option to reset the environment settings to default. (Environment->Reset)
- You can now drag entities around the environment by clicking on an entity and dragging your mouse.
- Altered the way Simulation worker threads were spawned and handled, greatly improving performance.
- Altered the way the TaskMaster called for simulations, greatly improving performance. (50% processor usage while idle down to 1-9%)
- Changed what happens when you double click on an existing entity. Instead of showing the entity list with that entity selected, it will now automatically load that entity into the entity editor.
- Changed the way mutual gravitation and electrical effects are handled, which should improve performance with those options enabled.
- Fixed a bug where an entity loaded from a file or quicksave would not properly restore its saved drag coefficient.
- Added a new way to generate entities. Trace a line on the canvas while holding CTRL and ALT to define a line for generation, and upon realease define the radius and mass of entities you want to generate along that path.
- Added command line flags "-p X" where X is some integer to set the number of logical processors. (Useful if you want to simulate a lesser-core machine on a high core machine)
- Added the option to enable the rendering of "fine circles" - showing exactly the extent of a ball entity, at the cost of processing speeds.
- Added several chat commands (see chat commands above).
- Altered the way threads were created in simulation code.
- Cleaned up the editors' GUIs.
- Fixed a bug where colliding entities sometimes temporarily disabled tracing if they had it enabled.
- Changed the way traces were handled, greatly improving performance with a large amount of traces on the screen.
- Modified the simulation code to re-use old objects to increase performance and lower memory commitments.
- Changed simulation threading algorithm to never exceed the amount of logical processors on a machine.
- Fixed an inaccuracy with the simulated time calculation.
- Improved Collision iteration efficiency. (Thanks to Joe Grause for suggestions)
- Multi-threaded simulation calculations.
- (On machines with HyperThreading technology you may experience matrix bullet-time like effects at the start of a simulation run.)
- Added Real vs. Simulated time counter to the top left of the screen while simulating. (Thanks to Justin Waddell for the suggestion)