Mark Walker - 2006-05-19

The following is a summary of the project that was submitted with our application to sourceforge:

Foundational Physics is a Java physics engine whose purpose is to provide an easy interface for programmers to simulate a physical environment as governed by Newtonian mechanics. The name 'Foundational Physics' was used because of the engine's modular, object-based design that gives programmers flexibility and power when implementing their own physical phenomena. For example, if a developer wants to make an airplane game, all the programmer needs is the set of equations that govern lift and drag forces to calculate their vector quantities, and the engine will take care of the rest.

Currently the engine is composed of a main physics engine class, which executes the main timestep method that updates the environment, and contains methods for responding to collisions. The PointMass class is the parent of all solid objects, and each object implements the BoundingArea interface. BoundingAreas include axis-aligned bounding boxes (AABBs), bounding circles, and static right triangles. Currently all objects are non-rotational. A Vector2D class is used for keeping track of locations and directions of objects. A PhysEnv class contains a list of all objects in the environment. Currently, locations are stored in the individual BoundingArea objects, but the engine has been coded so that the PhysiEnv class will be able to handle this more efficiently. Unique to Foundational Physics are the build-in constraint classes, which include ropes and springs that can be anchored at stationary locations or used to attach two objects together.