Space ship in weird 3D world
Due Date: Friday October 27th 2006
Idea:
A space ship travelling in a 3D world must contend with
force fields of various strengths (both attractive and
repulsive). The ship only has thrusters for extra speed and can
steer.
Physics:
- Ship is a point mass
- Ship is steerable in all directions
- Ship moves at constant velocity when not using thruster (i.e. Newton's law of inertia holds)
- Ship has a thruster to momentarily boost speed
- Force fields that attract and repulse ship
- Force fields should generate a force proportional to the inverse square of the distance between it and the ship
- Force field generators can not move and are not affected by other forces
Rendering:
- View from ship's cockpit as main interface
- Translucent colour gradients of force field strength
Core:
- Take user input from keyboard (or mouse) to steer ship and enable ship booster
- Save user input to a file
- Replay user input from file to get same results
- In other words, there are 2 input methods, direct-human or a 'replay' file
Scenarios. You need to create the following 3 scenarios:
- Pin ball table -- all forces repulsive
- Trap Escape -- Ship must navigate a path surrounded by attractive forces. [Think of a tunnel made of attracting sides]
- Freestyle -- combination of repulsive and attractive forces
Submission Requirements:
- README file containing notes on what libraries you used and how to get them (if not included)
- REFERENce file containing notes on what references you used.
This includes books, web pages, discussion with friends, etc. This
is an 'engineering journal'.
- Makefile or build script or detailed instructions on how to compile
- Source code
- Sample user input files for all three scenarios
- Must be submitted as a single file
(zipped or gziped archive).
Notes:
- Field strength must be scaled so that things look/feel 'right'
- Default velocity and thruster speed scaled so that things look/feel 'right'
- Must run on either Linux or MacOSX using OpenGL.
- Each student does own assignment (no group work this time).
- Any programming language can be used
- Recommend using pre-written linear algebra and ordinary
differential equation integration libraries
Bonus: (implementing any/all of these features will be worth extra marks)
- Rear-view cockpit mode
- Give visual indication of areas in space that are in-escapable
based on ship's maximum power (ie if you get too close, you will
get sucked in)
- Top down (2D) view (animation and 'complete path')