Sample C++ Programming Assignment
|
Module |
C++ Programming and Design |
|
Title |
Terrain visualisation |
You are required to develop a real-time terrain visualization tool written in MFC, C++ and OpenGL. The tool is required to display a fully textured undulating terrain surface as both perspective and plan views and to permit the user to move about the terrain surface.
Detailed requirements:
1. Two viewports are required within the main application window
a. A perspective view of the terrain. The perspective camera position, pitch and yaw are controlled from the keyboard or mouse.
b. A plan map view of the terrain, using orthographic projection. The orthographic camera is kept in sync with the perspective view camera.
2. The terrain surface is generated from separate DEM (Digital Elevation Models) files. Each DEM file provides height data at 25m resolution for one square kilometre tile of terrain. The files are in ASCII format and will be supplied.
3. A paging system is to be implemented. The application is only permitted to hold 9 tiles of terrain data in memory at any one time. As the perspective camera is moved across the terrain surface the paging system loads and unloads tiles to ensure that the nine closest tiles to the perspective camera are always available in memory.
4. At least one directional light is included in the scene.
5. The terrain surface is represented in 4 alternate ways (switchable from the keyboard):
a. Wire frame
b. Flat shaded
c. Smooth shaded
d. Textured
6. Aerial photos of the terrain surface are textured onto each tile. An image associated with each of the DEM files, will be supplied.
7. An ASCII index file is to be created (and used by the application) that links the DEM files and texture files with their position on the terrain surface.
8. A class diagram that clearly describes your design.
9. The C++ is to be compiled and linked under VS.Net
10. The code is to be portable across any standard OpenGL PC platform and therefore should only use basic commands (avoid vendor specific extensions)
Dates
|
Date of publication |
15th October 2002 |
|
Date for submission |
9:00 on 1st November 2002 |
This assignment is to be placed in the white box (outside the Dept. Office) no later than the time and date shown above, unless an extension has been authorised. Extension forms are available from the Dept. Office.
BEFORE submission, each student must complete a cover sheet (attached below).
Late penalties
For work submitted late the penalty is loss of 20% marks per day. Work that is 5 or more days late will automatically be graded as FAIL, and no re-submission will be allowed.
For full details, see student handbook.
Format of the Submission
The submission cover sheet (attached below) forms the front page of your submission.
Please use the submission cover sheet to perform a self assessment of your submission. You should indicate the percentage with which your submission meets each requirement. Provide appropriate comments in the space provided.
Submit this cover sheet as a Rich Text Format (rtf) file within your submission zip file.
The details of how to submit are explained in Submission policy for module 08960.
Plagiarism policy
The work which you hand in must be your own. Sharing of data is not allowed unless the assignment specifically permits it. Your attention is drawn to Plagiarism policy for module 08960.
ASSESSMENT STRATEGY
Module 08960
The assessment strategy comprises 30% of the module marks.
The overall assessment strategy is designed to evaluate the student’s achievement of the module Learning Outcomes, and is subdivided as follows:
|
|
Learning outcome |
|
1 |
Demonstrate awareness of performance issues and programming pitfalls within the C++ language |
|
2 |
Implement an effective real-time C++ application within an integrated development environment |
Module 08961
The assessment strategy comprises 10% of the module marks.
The overall assessment strategy is designed to evaluate the student’s achievement of the module Learning Outcomes, and is subdivided as follows:
|
|
Learning outcome |
|
1 |
Design 3D graphics programs for real-time graphics |
|
2 |
Implement 2D and 3D graphics programs in C/C++ using the OpenGL API |
|
3 |
Use the mathematical techniques of vectors and matrices |
SUBMISSION COVER SHEET
(To be complete by the student and submitted with the assessment)
|
Module |
08960 / 08961 |
|
Title |
Terrain visualisation |
|
Student name |
|
|
|
Requirements |
% complete |
Comments |
|
1 |
Two viewports: a. A perspective view. The perspective camera position, pitch and yaw are controlled from the keyboard or mouse. b. A plan map. The orthographic camera is kept in sync with the perspective view camera. |
|
|
|
2 |
Generation of terrain surface from DEM files |
|
|
|
3 |
Paging system that loads and unloads tiles from memory |
|
|
|
4 |
Light sources |
|
|
|
5 |
Terrain surface rendering:
|
|
|
|
6 |
Texture mapped aerial photographs |
|
|
|
7 |
ASCII index file to link the DEM files and texture files with their position on the terrain surface |
|
|
|
8 |
Class diagram |
|
|
|
9 |
VS.Net compatible C++ |
|
|
|
10 |
Portable OpenGL |
|
|
Note: If you submit your assessment you are implicitly stating that your code is in complete compliance with the plagiarism policy for this module.
FEEDBACK ON ASSESSED COURSEWORK
(An exemplar of the form returned to the student)
|
Module |
08960 / 08961 |
|
Title |
Terrain visualisation |
|
Student name |
|
Note that the standard achieved is scaled as Poor (P), Satisfactory (S), Good (G) or Very Good (VG)
|
Assessment criteria |
Learning |
Standard achieved |
Mark
|
|||
|
P |
S |
G |
VG |
|||
|
|
|
|
|
|
|
|
|
Total Mark
|
|
|||||
