Overview
This demo was created for a games company so I could show my maths skills. I have used OpenGL to render the entire scene, however I have not used any of the OpenGL matrix commands, such as glRotated(.....) or gluLookAt(...) . This is because I have written my own matrix class which has been used instead. The demo doesn't look very impressive as it is only meant to show my maths capabilities, it consists of various objects which jump and move about the world. The source code for this demo will be available soon.

The task was as follows :

Create a SMALL demonstration application that moves a 'character' object in 3D space such that it
appears to be 'jumping' between several 'platforms' at different locations and heights. All objects
including the character may be primitive 3D shapes.

The character should turn to face the next jump destination, and orient itself along the jump parabola
in every frame during the jump: i.e. it must construct the matrix representing its own 3D transform
( combined position and orientation ).

You can assume that the character's own "Up" axis will never deviate more than 90 degrees from the
world "Up" axis.


GOALS
=====

1. Demonstrate understanding and use of Matrix and Vector Maths in 3D space; in particular,
orienting and positioning objects and using vectors for querying relative spatial configurations.

2. Demonstrate use of basic 3D physics. ( Newton's equations of motion )

3. Demonstrate clear C++ code design, layout and commenting.


GUIDELINES
==========

1. Do NOT just use built-in utility functions from libraries such as GLUT or DIRECTX to
do all the maths. We want to see your OWN Matrix and Vector classes being used, and methods
such as dot and cross products in particular. Use your own Vector methods for all operations
on coordinates, rather than manipulating individual x,y,z values.

2. You can use any API for rendering, even GDI functions. We are not testing your graphics
knowledge for this position. You can get a quick start with an OpenGL stub from the internet
such as NeHe.

3. Collision detection is not compulsory. The character can just jump between fixed points,
but must NOT pre-calculate its full jump parabolas. ( i.e. it should have a physics-based
update during the jump, based on initial velocities that you calculate for each jump ).

4. Human control is not necessary. The demo can just run on a continuous loop.

5. Keep each class in a separate file.


POSSIBLE EXTENSIONS
===================

1. Add a tracking camera that also constucts its transform ( i.e. a "Look At" matrix )

2. Add characters that fly and bank into the turns.

3. Add more characters that chase or avoid each other.

4. Add some form of basic collision response.

 

Screenshots
The following image is taken from the final version

Downloads

Version

Date

Type

Link

1.0 12-06-03 Maths Demo
1.07MB