+#ifndef _NBODY_H
+#define _NBODY_H
+
+/**
+ * @file nbody.h
+ * @author Sam Moore (205030628)
+ * @purpose N-Body simulator: declarations of simulation related parameters
+ */
+
+#define M_PI 3.14159265358979323846264338327950288 /* pi */
+#define G 6.67428E-11
+#define DELTA_T 0.05
+#define DIMENSIONS 3
+#define square(x) ((x)*(x))
+
+
+/**
+ * Structure to represent a single Body
+ * @param mass - Mass of the body
+ * @param x - Position vector (array)
+ * @param v - Velocity vector (array)
+ * @param F - Net force vector (array)
+ */
+typedef struct
+{
+
+ double mass;
+ double x[DIMENSIONS];
+ double v[DIMENSIONS];
+ double F[DIMENSIONS];
+ int colour;
+
+} Body;
+
+/**
+ * Structure to store an array of bodies, along with the size of the array
+ * @param N - Size of the array
+ * @param body - The array of bodies
+ */
+typedef struct
+{
+ unsigned N;
+ Body * body;
+
+} System;
+
+void Body_Print(Body * a); //Print body a
+void Body_Force(Body * a, System * s); //Compute force on body a due to system of bodies s
+void Body_Velocity(Body * a); //Compute velocity of body a
+void Body_Position(Body * a); //Compute position of body a
+
+System * System_Init(char * fileName); //Initialise System (array of bodies) from a text file
+
+void System_Step(System * system); //Perform a single computation step for a System
+
+
+
+#endif //_NBODY_H