Monday, 21 November 2011

Milestone 1 - Using Mathematical Modelling to Create a Continuous Simulation of a Bicycle

Embedded below is the finalised Milestone 1 report that documents the research completed to date.  The size exceeds the 20 page guideline but is justifiable considering the volume of work completed.  Pertinent details of the more verbose aspects of project development have also been included, but in a reduced format.

Using Mathematical Modelling to Create a Continuous Simulation of a Bicycle

Wednesday, 16 November 2011

Assessment of Bicycle Physics and Mechanics and their Usage within a Continuous Simulation

This paper signifies the ending of the initial research stage and describes how each component within a bicycle will be used within the simulation.  This data can then be used in the other functions in order to correctly and up to a point, accurately, model the bicycle.  The paper documents real world physics that would act upon the object and then how to determine the outcome.

In addition to this paper, the earlier papers have been updated to indicate the new style adopted in this project.

Assessment of Bicycle Physics and Mechanics and Their Usage Within a Continuous Simulation

Following the completion of this paper, the following task will be to compile the work done so far and document it in readiness for handing in the first milestone.  

Monday, 7 November 2011

Project Meeting - 04/11/11

During this weeks project meeting, several topics were covered. With regard to the structure of the reports being generated, I was advised to consider utilising a 3rd person writing perspective.  This style is usually found in scholarly articles but can be difficult to achieve without making the article difficult to read.  Once I feel that I am competent in this style, the the previous reports could be re-written.

I have explained that the report into software development platforms and languages will be completed by the next meeting and have decided to begin looking at researching specific bicycle mechanics and how to map those onto the project.  I will also begin looking at advanced RK4 methods that can be used for the bicycle integration and spring systems within the shock absorbers.

The presentation was finally completed in this session, with Dr Paul Angel as the secondary supervisor.  I feel the presentation went well and have been given constructive feedback.  Dr Angel has indicated that I should look into constraint modelling as soon as possible as it may be one of the more technical and time consuming aspects of the project.

Edit 1: This post was typed the evening of the meeting but not posted until later due to some error.  Many of the things discussed here have already been completed and posted.  Edit to explain continuity errors.

Sunday, 6 November 2011

Research and Feasibility Assessment of Constraint Modelling for use in the Continuous Simulation of a Bicycle

One of the core research topics to be considered in this project was how to accurately model the bicycle and ensure that it moved appropriately.  As constraint modelling is such a large field, a feasibility study was undertaken to consider the implications for the project should such a complex system be created.  The report below documents the findings of this research and presents its conclusions.

This report has been developed in a new style and structure that is hopefully easier to read and understand and more professional in content.

The report can be opened in full screen or zoomed.

Research and Feasibility Assessment of Constraint Modelling

Thursday, 3 November 2011

Assessment and Evaluation of Software Development Platforms and Languages

Below is a brief report documenting my findings as I evaluated several different development languages and platforms.  This is far from a scholarly article and merely serves to illustrate my personal choice and the reasoning behind it.  As before, the document can be zoomed or viewed in full screen.

Assessment and Evaluation of Software Development Platforms and Languages


Wednesday, 2 November 2011

Assessment of Mathematical Integration Methods for use in Continuous Simulation

Below is an embedded version of the first report to be generated throughout the course of this project.  The report discusses several methods of integration before coming to a conclusion of which will be used in the application.  Conversion from .docx to Google Docs may have altered the layout slightly.  If you have difficulty in viewing the document, then choose full screen or zoom in from below.
Assessment of Mathematical Propulsion Methods for Use in Continuous Simulation


Project Meeting - 27/10/11

This weeks meeting was quite light as there seemed little to discuss due to the project moving ahead steadily.  The second supervisor was discussed and as the post has yet to be assigned at such a late stage we have decided to progress anyway and consider doing the presentation with just a single supervisor.

As per the previous instruction, I have delivered the completed weightings and discussed these with the supervisor.

The remainder of our meeting was taken up with discussing current progress.  I have informed the supervisor that work is progressing well but has slowed slightly as I encounter difficult research topics.  I have set a target that by the next meeting I will have three completed research papers.

Edit 1: I have spent some time asking around the University and have secured Dr Paul Angel as my second supervisor.  he has agreed to be present at the next meeting so that I can deliver my presentation.

Edit 2: After careful consideration, I have decided to aggregate the research papers into a single file and then evaluate the outcomes of each before reaching conclusions, this can then be modified to form a large part of my first Milestone.

Thursday, 20 October 2011

Project Meeting - 20/10/2011

During the second meeting with the project supervisor, we discussed most of the material that has been completed and where the project should be progressing to. As a second supervisor has not yet been assigned, I will be moving forward with research under the assumption that my work to date is accurate. My initial presentation will take place once a second supervisor has been allocated. 

The presentation slide show was viewed and found to be sufficient for the requirements, I have been told to complete the weightings marking sheet and submit this, I will also update the presentation to include my reasoning for the scheme I choose.

I have planned the project extensively but have been informed that one of the most important criteria in planning is to ensure that I map the deliverables life cycle sufficiently to ensure completion of all objectives. Initial research topics were covered and found to be adequate.

I have been asked to generate a prototype report on a relevant topic of my choosing. This needs to be a professional report so that my style may be assessed initially. This will highlight any issues before moving on to larger documentation. We also discussed UML modelling software, this is quite an important part of the planning stage so it may be valuable for me to actually develop a sub-report that can be included in my report that details my findings toward these packages. This could potentially be a topic for the prototype report; however, I feel that I would like to report on a more dominant topic to the project in order to start getting feedback as soon as possible. 

 The final item discussed was the class diagram. One of the possibilities raised was to decompose the bicycle itself in order to have more specialised classes capable of dealing with individual components. I spent a little time looking at possibilities and came up with a potential candidate. To this revised version, I have also added some functionality.
This is far from a completed diagram in any respect, but I hope it gives an idea of what a suitable architecture could be and shows a little of the functionality that will be implemented.

While I continue working on the initial design documents, I will begin researching one of my core topics in order to present my prototype report.

Wednesday, 19 October 2011

Initial Presentation

This post is a documentation of the initial presentation that will given in order to fully demonstrate that I understand the project and have planned how I will progress and meet deadlines.





Report for Presentation:

Initial UML

This is a small step forward, but one that has presented me with my first opportunity to get some design under way.  I know that research is the most vital step at this stage but I believe having a rough outline of the program structure will allow me to envisage how solutions could fit into my project as I progress through the research stage.

The diagram outlines by basic thoughts with regard to structure, it is quite basic at the moment but will grow in time.  My concept revolves around having a brain class that will handle all interfacing with the rest of the program and then utilising other classes for the mathematics.  I decided to break up Conversion and Calculation into distinct objects in order to increase code-reuse for the future.  It will allow these classes to be extended through varying ways individually, without limiting them to specific scenarios.

I will continue to add ideas to the model as I progress through the research and will upload a more up to date version when sufficient progress has been made.  The next  post will be the documentation I intend to use in my presentation, it will include the actual Power Point file, presentation notes and the report that will go into greater detail regarding the presentation.

GANTT Chart and Timeline

The initial GANTT chart that provides an overview of the project life cycle has been completed and all general tasks have been included with expected time scales.  Below are some excerpts of the chart that indicate the pertinent information.  Please click for a larger image.

Timeline:

Tasks:


Below are links to the original documents using a public link:
Project File
Tasks .PDF
Timeline Image

The next task to be completed will be a very general UML that gives a high level view of the basic program structure.

Milestone Requirements

1. Initial Presentation: (Date undetermined)
Provide Outline of Objectives:

  • Aims of project.
  • Detail Results and outputs required.
  • Describe research methodology and how I intend to evaluate these.
  • Cite likely sources and references to be used.
  • Outline significant resources and facilities required.
Project Work Plan:
  • Define stages of project and likely timescales.
  • Show how I will meet Milestone deadlines.
  • Indicate how I am going to achieve final report deadline.
  • Project will be broken down into Planning and Implementation categories.
  • Each category will be broken down further into individual tasks.
This presentation will take place as a Power Point presentation covered all of the above topics, but containing limited technical information.  Core topics to research and initial ideas will be discussed.  To accompany the presentation, I will provide a written report containing all information covered.  Presentation slides will also be given in order to provide a summary of the report.  This presentation will take between 10 and 15 minutes.  In order to accurately show how I intend to meet deadlines, some basic design documents will be included in the presentation, tools such as time-lines and generalised UML will be most valuable.  These documents will form an appendix in the final report.

All reports from this point should conform to the following rules:
  • Word processed.
  • Page numbers included
  • 12pt font recommended
  • 1.5 line spacing recommended
  • No A4 binders
  • Bibliography
  • Webliography with dates

2. Milestone 1: (Wednesday 23rd November 2011)
Relevant Details:
  • Report approximating 20 pages.
  • Worth 10% of overall mark.
  • Initial design documents
  • Research and evaluation undertaken
  • Solutions and documentation
  • Solution testing
This Milestone is all about the research, I must report on what research has currently taken place and document it in a professional manner.  One of the initial solutions should be a section evaluating the software development platform that will be used as this will be one of the critical factors.  Each source should be evaluated on its own and against the other candidate solutions before indicating the chosen method and documenting the reasons.  The software, research methodologies and commercial alternatives to the project and individual solutions must also be detailed in this way.  The research topics that pertain to the actual development of the product have been listed previously and will form the starting point of my research.  During this Milestone, I will deliver the report that is required, including the general criteria listed above, and the design documents that have been completed up to this point.  For each section that is documented, I will endeavor to include pseudo-code or code fragments showing how the research output and design have culminated into a solution.  This report will also include a completed timescale or GANTT chart, extended UML and initial ERD. These documents will form an appendix in the final report.  Both Milestone 1 and 2 must be separately bound into a single document containing everything relevant to the stage.


3. Milestone 2: (Wednesday 2nd May 2012)
Relevant Details:
  • Report approximating 20 pages.
  • Worth 20% of overall mark.
  • Prototype deliverable
  • Completed design documents
  • Research and evaluation undertaken
  • Solutions and documentation
  • Solution testing
This Milestone will be an extension and enhancement of the first.  All research that has been undertaken since M1 must be detailed in the same fashion but must show serious progression and have almost all of the solutions required by the project.  All design documents must be finished by this point, ready to begin development.  This will be included in the deliverable.  In addition the research, I intend to include an initial prototype that demonstrates the core features of the project.  This is not a finished product, but must be a solid foundation that shows off how the product will behave.  This prototype must have full comments, testing of methods and brief manual sections indicating usage.  Every part of this prototype must be of excellent quality as it will form the basis of the entire product.   Throughout this report, I will clearly show how the design process has progressed and how I have mapped the initial development to it.  Each solution will have pseudo-code and possibly a code fragment attached to it, showing research output has yielded a finished product.


3. Final Report: (Wednesday 1st February 2012)
Relevant Details:
  • Report approximating 100 pages.
  • Worth 70% of overall mark.
  • Application Devlierable
  • Completed extended design documents
  • Research and evaluation undertaken for each solution
  • All solutions and documentation
  • Full solution testing compiled into log
  • Application manual
  • Full commenting
  • All documentation included in an appropriate manner
Sample Layout and Topics:
  1. Title Page
  2. Statement of originality
  3. Abstract
  4. Acknowledgments
  5. Table of Contents
  6. Introduction and Objectives
  7. Main Report
    1. Plan (Timescale or GANTT chart)
    2. Research and Output (Extended M1)
    3. Design and Development (Extended M2)
    4. Evaluation Methodology
    5. Evaluation Completed
    6. Future Enhancements
    7. Conclusions
  8. Appendices:
    1. Objectives Report (Initial Presentation)
    2. Weightings
    3. References
    4. Bibliography
    5. Webliography
    6. Blog Transcript
This is the final deliverable and the summation of the entire project.  Everything here must be of the highest  quality and conform to each criteria officially and personally set.  All research and documentation up to this point will be extended and covered in greater depth throughout.  All individual documents will be included either as appendices or within the report as appropriate.  The application deliverable must be complete, fully functional in all proposed areas and come with extensive documentation concerning usage, testing and code flow (Through the use of comments).  Both Milestones and the final report will covered in far greater depth as I progress through them.

The next post will contain a general overview of the task timeline, with some areas broken down into smaller  and more specific tasks.  The initial, general design documents created as a result of this planning will also be included.

Tuesday, 18 October 2011

Initial Research Topics, Sources and Resources

During this initial stage of the project, there are several things that need to be considered.  In addition to the creation of basic design documents that have been previously listed, I will need to ensure that I have ready access to the major resources required for the project and being research.

Below I have listed initial research topics that will form the core of my project.  More will be added as this project progresses.

Initial Research Topics:
1. Euler Integration
2. Runge-Kutta
3. Physics Equations
4. Software Development Platform and Language
5. Existing Solutions to Overall System
6. Code Compilation into DLL files.
7. Marshaling DLL files into COM
8. Bicycle Mechanics and Structure
9. Reference Style

In addition to these specific topics, I have begun gathering a starting point of locations that may hold promising avenues of research with regard to these topics.  This information is not formatted or referenced to any standard model; however, as I begin to use these services, I provide full referencing in a consistent style and evaluate what is found.

Initial Research Centres:
Journals and Databases:
  • ifpan.edu.pl/journal.htm
  • iop.org
  • Google Scholar
  • University of Glamorgan FINDit System
  • Web of Science Database
  • Inspec
  • CACM


Books:
  • Introduction to Mathematical Modelling - Bender
  • Mathematical Modelling - Berry and Houston
  • Physics for Game Developers - Bourg and Seemann
  • Mathematical Modelling Techniques - Rutherford


Websites:
  • www.allphysicsequations.com
  • www.ajdesigner.com/index_physics.php


This is an early stage in planning to begin cataloging required resources but I believe I can make a start with the basics of what I require in order to begin.  Some of the these may seem basic or trivial but they are all vital in the progression of this project.

Resources:
Working and Stable Computer Able to Develop Project From:
This may seem obvious but it is vital in producing this project, the computer must have enough processing power and memory to run and test the program, be able to display what is happening and have enough disc space to store the program and associated documentation.  Both my home computer, laptop and University computers (Which I have complete access to) all fit this criteria.

Visual Studio 2010:
This is the most likely development platform that will be used for this project.  The computers at University comes loaded with it and the MSDN AA provides a free version to students that have loaded onto my personal machines.  This selection has yet to be evaluated and verified.

Internet Connection and Browser:
Required for research and communication.  High speed internet connection using Ethernet and WiFi at University is available in addition to fast Broadband at home.  All locations come equipped with a variety of browsers.

Microsoft Office Package:
This is not a decision that will be evaluated as it does not affect the project and is down to personal choice.  I will use Office as the latest versions are available at both home and work locations and it comes with every piece of software required for design and documentation, these include Visio for Modeling, Word for documentation, Project for planning and Excel should I require spreadsheets.  Documents will most likely be printed to a .PDF format for serialisation, which is supported, and Visio will be evaluated against others for its Modeling ability before a decision is made.

Design Document Modeler:
As previously mentioned, Microsoft Office comes equipped with its Visio Modeler, this will be evaluated against others such as Star UML and then a decision made.  Modeling software is vital in the planning stage and will provide a solid foundation before development commences.

Access to Research Literature:
Access to online journal databases and written material is freely available through the internet and the University of Glamorgan's Learning Resource Centre.  

Backup Utility:
While others may not consider this to be a vital component, I believe backing up work to be an integral part of a project.  As such, I will use automatic syncing tools such as Dropbox and SugarSync to automatically back up my work across all personal computers.  this allows me to always work on the most up to date version of a file and have it backed up not only to my other computers, but also to a cloud server.  In addition to this, I will use Backify to upload all work from my home computer (Which is updated through syncing) to a large, secure cloud server and have setup automatic scripting to backup the documents to an external hard drive connected at my home.  Both of these solutions happen automatically, daily.  This may seem severe, but it allows me access to my up to date work anywhere in the world, at any time, and is backed up to no less than five difference locations so that I can always be secure.

My next stage is to detail exactly what needs to be done by certain deadlines and document how these milestones will be achieved within the allotted time.  I can the move on to developing the initial design documents.



Research Methodology

The way in which I will progress through this problem is by breaking the task as a whole into smaller and smaller individual problems, much the way that functions and classes break down structured code.  Initially, I wont think in terms of code, but as a multitude of small, generic problems.

Once these problems have been broken down into components parts, I can begin looking for solutions.  Many of these tasks will not require research as they are simple enough or well known enough in implementation.  For those tasks that require research, I will document everything that I come across.  Even pages that I read that may not be completely relevant will be documented as I progress through the literature.  My search will mainly take place using articles, journals and books; both electronic and physical, with some lesser reputable sources being used for less important or complex issues in order to remain efficient.

I will be adopting a slow but optimal research methodology, instead of simply finding a correct or proven answer and then leaving the topic and writing up what has transpired, I will continue researching the topic until I believe I have found a suitable number of candidates.  This is the stage where evaluation will take place, each candidate solution will be evaluated for efficiency and accuracy.  I want this project to be as realistic as possible but there is a limit to the amount of efficiency that can be dropped before the project becomes slow and grinding.  My ideal set would consist of a complete solution that works very efficiently and ensures a smooth operation at run time.  Big O notation is a good way of me getting a feel for these solutions initially, personal testing will then refine the result.

When creating a unique solution to a problem, I will bear in mind several things in order to smooth the research process in addition to the problem decomposition mentioned above.  These are merely a rough outline of the technique, more in depth detail as to how they are used will be provided as they are utilised through the process.

Problem Solving Methodologies:
Output Analysis: 
As this project is mostly a physics problem, I am able to backtrack from the expected output, through the processing and come up with a list of inputs that need to be provided in addition to potentially correlating inputs/outputs to arrive at a heuristic for solving the processing.

Existing Solution:
This project is similar in structure to many other computing problems, as such there are probably many existing solutions for problems that I may encounter and need to solve.  While I am not suggesting plagiarism, it makes perfect sense to examine existing solutions, evaluate them based on your specific requirements and then create your own version of those solutions in order to match the unique criteria.  Many problems can be solved using the previously mentioned technique; however, simply because there does not exist a computing solution, does not mean there is not a solution elsewhere.  The bicycle simulator is perfect example and lends itself rather well to this method.  Just as I will need to solve mechanical and physics based issues within the engine, these issues have already been solved with the production of real bicycles.

Automating a Manual Process:
Similar to deconstructing a problem, deconstructing a process to its component parts and then looking at how these steps work could be an invaluable way to solve these problems.  By being able to do a single task manually, virtually or in reality; gives us a building block to work with in order to automate the process ready for continuous simulation.

Feasibility:
This is quite a large issue with projects of this sort as we must weight up options and select not necessarily the best, but the best fit.  Each problem solution will be a constant balancing between efficiency and accuracy.  My goal is to create a solid solution to the overall problem and deliver a quality piece of work.  This work may not do everything possible, but what it does will fit the brief and do it well.  Enhancements and extensions will be considered once the project is completed to my satisfaction, those that are uncompleted due to time constraints will be fully documented within the final report so that others looking at the project in the future, or even myself, can then use the ideas and build on them in order to improve an already quality product.  Just as I apply this thinking to project in general, as I will with individual components and researched items.  I will endeavor to provide the best solution for each problem through vigorous research, but there will be a limit to the amount of time I can spend not only researching, but also  implementing.  If a perfect solution exists but an adequate one also exists that will not detrimentally affect other components then I must err on the side of caution.

The next post will concern individual research topics that I will need to cover initially.

Design and Development Stages

As a software engineer, I have a wide variety of tools available to me that have been developed with this specific purpose in mind.  Before I even look at code development, I will, thoroughly plan out and prepare myself.  My initial document will be a Gantt chart created in Microsoft Project.  This application was built for project development and will aid me in planning out each and every stage in detail so that wherever I am in the cycle, I am aware of what is coming up, where I should currently be and how to evaluate what has been completed so far.  Initially, I will only place major milestones relating to the project but as my initial planning progresses, I will begin to include individual tasks that I have decided will become a part of my project.

As this initial design stage progresses, I will discover uses for more and more design tools and will include them into the overview as necessary.  There are, however, some that should most certainly be included.  These are the ERD and UML diagrams, a flow chart depicting the flow of information throughout the system could also be very useful in development and in demonstrating my ideas to the client.

The UML and ERD diagrams quite simply plan out the entire program structure.  By utilising these vital tools, I can immediately get an overview of the project before I begin, this will enable me to spot any potentially difficult areas and help me get started on building the code structure.  Many programs even give the option to convert a UML into a code shell.  I will evaluate these programs briefly before work commences but I do already have knowledge of Star UML and Visio.  These completed diagrams will form the backbone of my design.

Once I have a working design, I will begin work on the more important functions within the classes by sketching out pseudo-code.  This will allow me to simply focus on the problem solving aspect, without having to concentrate on converting the solution into code.  The pseudo-code section will be quite large but will not look at basic operation mechanics, such as loops and STL use.  Their usage will simply be indicated but not designed as they are basic techniques and should be well known to anyone using this project.

Once the pseudo-code is completed, I will begin working on the code.  This will take place in compartmentalised sections, where I can focus on an individual section of the work (Detailed further below), then test it in isolation in order to ensure a working solution to individual parts before bringing them together as a completed solution.  Initially, I will create a small scale prototype at some point in the design stage in order to demonstrate basic functionality and feasibility of the remainder of the project.  This will have very little working but will simply allow me to demonstrate basic code structure and core techniques.

The code will now be completed and commented thoroughly, I will err on the side of too much, rather than too little and provide extensive comments throughout.  The comments will also indicate basic usage and testing.

Testing is going to be one of the largest parts of this project and will follow once I have commented the code properly.  Testing, as previously mentioned, will take the form of a log and will show valid and invalid inputs and reactions, processing accuracy and time across each calculation with possible solutions or improvements and finally, every piece of output data will be tested for accuracy and understandability within the solution.

The final stage of this deliverable will be the creation of a handbook that will provide extensive usage and details regarding the processing of data within the libraries.  This will provide the user with all the information required to use the libraries properly.  The testing log will be included here as an appendix.

The next post will contain details regarding the Research Methodology that I plan to adopt.

Technical Requirements

The technical requirements of this project were actually rather more simple to illicit than many other situations as the project is already in development, my client knows what this deliverable needs to do and is some ways, how it needs to do it.

I think of the project as the processing part in the classic Input -> Process - > Output visual.  It is simply taking in data, using it and the outputting modified data.  After speaking with my Client, I have obtained all environmental and physical factors that need to be taken into consideration when performing calculations.

Data to be Considered:
Rider Weight: Default Value.
Surface Friction: Surface type obtained from location, values must be tested and set.
Hill Ratio: Factor of steepness obtained from vector between type heights.
Rate of Pedalling: Integer from bicycle converted to force.
Degree of Steering: Value between 0 and 1, converted to degrees.
Front Suspension: Value between 0 and 1.
Back Suspension: Not included at start, possible enhancement.
Location: X, Y and Z of front and back tyres.
Tyres: Default tread friction and radius.  Must allow for other tyre types in the future.
Front Brake: Value between 0 and 1, possible conversion to Newtons.

Specifics to Consider:
1. Order of rotation calculations (Yaw, Pitch, Roll)
2. Heave, Position data.
3. Bicycle technical details to be stored in a file.

Bicycle File Stored Values:
1. Suspension Value
2. Weight
3. Tyre Friction
4. Tyre Radius
5. Length Between Wheels

In addition to computing how the bicycle will traverse the virtual world, there is also scope for including calculation for what will happen if the bicycle has a collision; either with a world object, or with the ground following a loss of momentum or patch of rough terrain.  This would be considered an enhancement so will be covered in more detail in the future.

This covers all of the technical aspects that must be considered that I have so far ascertained.  More may be added as this project progresses, but this indicates the absolute minimum that must be researched and considered to date.  My next post will discuss research methodology in general and specific planning and design operations that I will complete and follow in order to build a solid structure and timeline for the project.

User Requirements and Objectives

There is a single user requirement of this project and then several others that directly relate to the main objective.  The most basic version of this main objective will be a suite of libraries that conform to the specifications first obtained from Jim during our initial meeting.  In a sentence, I must create a set of libraries to  continuously process the physical and virtual inputs and then output processed data such that the application updates both the bicycle and visual display to correctly indicate the modified state.

This suite of libraries will be, as a minimum, a set of classes that will handle and process all data required.  This data will be documented in future posts.  In an ideal world, this set of classes will be manipulated through a pipeline that will transform the classes into a set of .DLL files, which will then be converted to COM components in order to allow the existing structure to handle them more easily and effectively.

There are several choices available for which language to use for the deliverable creation, the main contenders are C++, C# and Java.  Others, such as Python could also be considered.  The main issue that arises from many of these languages is that they are very high level and take considerable control away from the developer.  If this project required Rapid Application Development then I would certainly consider C#, Java or even Python.  As this project is focussed on quality within the time frame, I will choose a language that offers me the greater control over how data is manipulated.  C++ is the obvious choice as I am already well versed with the syntax and semantics and there are massive resources available for a wide variety of uses.  I have been informed that the language is not restricted so will continue with the assumption that I will be using C++ in order to code this project.

In addition to the main deliverable, I will also provide a handbook that explains the code's mechanics and usage so that it can be easily slotted in to the existing project.  Fully commenting is an essential part of this project and will be included with the code.  As this will be used in a real world situation, testing will play an even more integral role with the project.  Each function must be tested vigorously for inputs and output and the project as a whole must work seamlessly to provide a professional user experience.  A full testing battery will be carried out, documented extensively and then recorded as a log that will constitute another deliverable.

There are several specific user requirements that have been given, these don't form a deliverable as such, but must be completed as the project finishes.  These are technical requirements and will be covered in the next post that details the technical requirements and details that have been obtained and calculated so far. 

First Meeting - 14/10/11

My first meeting with Jim has been the initial opportunity to illicit specific project requirements.  As this project already has a foundation that I must extend through the Physics Engine, there is a smaller amount of creativity required, but a far greater need to comply with existing restrictions and parameters.

I have been presented with two options regarding the structure of the project.  One choice was to simply create  this project in my own way, as a prototype stand alone for something of my choosing, or to become involved with the existing project and deliver something that can actually be put to use within the system.  I have chosen the latter as this will allow me to become a part of something real within a professional environment and actually contribute something to a production.  This will allow me a greater understanding of what to expect in a relevant environment by giving me the opportunity to act in the role that my career will eventually propel me towards.

We have discussed the first official deliverable, which is the initial project report, and I have understood what is required of me during this first stage.  The presentation, which will take place in front of two supervisors, is a way for me to demonstrate that I understand what is required of me and to show how I aim to plan out the project duration.

This presentation will be broken into two segments: 
1. User Requirements and Objectives:
Here is where the bulk of my presentation will take place as this is where I will be describing that I have understood what is required of me and how I aim to fulfil these obligations.  I aim to focus around a single aim and then supplement this with several others', that are not as integral, but still important to the project.  This part must have complete clarity in indicating how I will progress and what I will deliver.  

I will indicate what I guarantee as a deliverable but also include items that could be included if time permits.  These will be extras and whether they are delivered or not, my final report will document how they could be implemented.  Each of these items will undergo a feasibility study. Each objective detailed will have a deliverable associated with it.

I intend on presenting methods that I will use for solving this problem and indicate how I plan to proceed with regard to specific aims rather than giving detailed technical explanations.  This will take the form of backtracking, where I will look at the aims, then the results and deliverables that meet with these aims, the methodology required to achieve these deliverables and results and the sources and references used to being work on the methodology.  The final stage is ensuring that I have access to the facilities and resources required to complete this project.

2. Project Work Plan:
The second stage of this presentation will be significantly smaller, but if anything; more vital to the success of the project.  Here is where I will demonstrate that I have appropriately planned out the project timeline and can show a feasible plan for the workload, based on deadlines and milestones, that will allow me to achieve success.

The next stage of the project is fully document the technical details, including input, output and processing, and start to tie these into the objectives.  When I have completed the objectives and understand each stage that I must take in the project, then I can begin evaluating specific tasks and plotting them onto the timeline.





Abstract

This Blog has been created for the sole purpose of tracking and documenting the progress of a final year project. The project, titled "Mathematical Modelling for Continuous Simulation" will take the form of creating a Physics Engine for a bicycle simulator. 

This simulator works by providing users with a training bicycle connected to a computer that shares information regarding the bicycles physical state as manipulated by the user and that of the virtual world that is displayed on the screen of the computer. By use of this communication, the user interacts with the virtual world and receives feedback in the form of visual display and differences in the way that the bicycle behaves. 

The physics that is used to calculate the bicycle behaviour and representation in the virtual world will be handled by a set of libraries, these libraries are the final goal of this project.