\documentclass[a4paper,10pt]{report}

%\usepackage{url}

\title{Solar system simulator}
\author{Sam Morris \\ Dr Richard H Banach}
\date{13 October, 2003}

\begin{document}

\maketitle

\section{Description and Objectives}

The aim of my project is to create a ``Build your own solar system'' kit that lets the user create a star system out of a number of heavenly bodies, including a star and planets. The user can then set the simulation in motion to see how their star system develops (or collapses!) over time, according to the gravitational effects that the bodies exert on each another.

I will implement my project in C++, using the OpenGL library to present the interactive simulation to the user. I have not had much experience with programming in C++, so I am treating the project as a good way to learn the language. I have had experience with using OpenGL both in the second year graphics course and in my own studies, however I intend to learn how to use advanced features, such as texture mapping, to make the simulation look pretty.

Finally, I intend to learn how to use a revision control system such as CVS to manage the source code that I produce.

\section{Features}

\subsection{Desired features}

\begin{itemize}

\item A graphical program that simulates the interactions between many bodies due to the effects of gravity.

\item Interactivity in the program; the user should be able to pause the simulation and alter parameters at any point, as well as adjusting the rate at which time flows.

\item The user should be able to save the state of the simulation to disk and restore it later. This should allow for some interesting example star systems to be distributed with the program, such as a realistic model of our inner solar system, or a model of a planet orbited by a moon, itself being orbited by another moon. Such examples could also be used to demonstrate astronomical concepts such as a binary star system, the path of a comet, or a slingshot manoeuvre.

\end{itemize}

\subsection{Wishlist}

\begin{itemize}

\item The user could be able to go back in time to adjust a parameter, then continue the simulation from that point for the generation of ``what if?'' cases.

\item It would be nice to be able to export animations generated from the results of the simulation.

\item The use of texture mapping to produce interesting graphics, such as the use of a real ``map'' of the sky, as seen from our solar system.

\item The finished program should be cross-platform, at least between Linux and Windows. The use of C++, OpenGL and other cross-platform libraries such as ``libsdl'' and ``libpng'' should make this possible.

\end{itemize}

\section{Reading list}

\section{Project plan}

\begin{description}

\item[Proposal] October 15th. This document! Contains an overview of the project and an outline of the project plan.

\item[Research] Performed before and during the design and implementation stages as required. Since it is easier to learn by doing rather than reading, I hope to knock up a few prototypes as I work out how best to simulate the interaction between planets.

\item[Design] I would like to have the overall system design finished by the 27th of October. Details can be filled in as necessary after this date, but most aspects of the operation of the system (as outlined under Features, above) should be fixed by this date in a Specification document.

\item[Poster] This leaves two weeks to prepare materials for the project poster, which is due in on November 14th\ldots

\item[Seminar] \ldots and the seminar, which will be between November 17th and 28th. It would be nice to have a working prototype of the simulation to present at this time.

\item[Coding] System implementation, using the prototype as a basis, will take place from around the 17th of November, up until the end of the first semester. I expect development to trail off near the end of the semester so that I can revise for my exams.

\item[Report: first draft] Should contain background information about the project, my research, and be reasonably complete with respect to events occurring in semester 1. Should be ready about the 7-15th of December.

\item[Testing] Coding will continue after the start of the second semester, which is when I intend to start formal testing of the program. Testing and coding will overlap to some extent. I will put a provisional date of early February for the end of the major part of the implementation. This leaves a month to hunt down the remaining bugs and polish the program off.

\item[Demonstration] I can also use this time to prepare for the formal demonstration of the project, which will occur around the 10-24th of March.

\item[Final report] After the demonstration I will have about three weeks to complete my report, including the analysis of how the system operates compared to the original specification. The final report is due on the 5th of May.

\end{description}

\end{document}
