struct point { double x; double y; double z; }; struct world { char integrator[10]; // "RK4" or "Euler" double dt; // timestep, e.g.. 0.001 int n; // display only every nth timepoint double kElastic; // Hook's elasticity coefficient for all springs except collision springs double dElastic; // Damping coefficient for all springs except collision springs double kCollision; // Hook's elasticity coefficient for collision springs double dCollision; // Damping coefficient collision springs double mass; // mass of each of the 512 control points, mass assumed to be equal for every control point int incPlanePresent; // Is the inclined plane present? 1 = YES, 0 = NO double a,b,c,d; // inclined plane has equation a * x + b * y + c * z + d = 0; if no inclined plane, these four fields are not used int resolution; // resolution for the 3d grid specifying the external force field; value of 0 means that there is no force field struct point * forceField; // pointer to the array of values of the force field struct point p[8][8][8]; // position of the 512 control points struct point v[8][8][8]; // velocities of the 512 control points };
Example: dt=0.001 n=5 Now, timestep equals 0.001. Every fifth time point will actually be drawn, i.e. frame1 shown by display() <--> t = 0 no frame shown <--> t = 0.001 no frame shown <--> t = 0.002 no frame shown <--> t = 0.003 no frame shown <--> t = 0.004 frame2 shown by display() <--> t = 0.005 no frame shown <--> t = 0.006 ... no frame shown <--> t = 0.009 frame3 shown by display() <--> t = 0.010 no frame shown <--> t = 0.011 ... no frame shown <--> t = 0.014 frame4 shown by display() <--> t = 0.015 no frame shown <--> t = 0.016 no frame shown <--> t = 0.017 ... End of example
To display all the time points, set n=1. It is up to you to implement
the functionality of displaying only certain timepoints.
One good way to handle this:
... (somewhere in doIdle() ) for (i=1; i<=jello.n; i++) { if (jello.integrator[0]=='E') // Euler Euler(&jello); if (jello.integrator[0]=='R') // RK4 RK4(&jello); } ...
You will need to create your own world files when you will be testing your program. Except for the header, you probably don't want to edit world files directly. The lines describing positions and velocities are meant to be machine-readable and not human-readable. Instead, use the createWorld application to generate your own files, and then use them for the simulation. Complete code for createWorld is provided together with the starter.code.
createWorld is a simple application that sets the fields of a world structure, and then uses writeWorld routine to write it to a disk file. To create different world files, you have to manually edit the code in the main() function of createWorld.c . Functionality to re-compile createWorld is included in the Makefile. To make different models, modify the fields of the jello world structure in main(). Also, modify the for loops to set the positions and velocities as you wish them for that particular world file. Don't forget to change the name of the output file in the call to writeWorld at the very end of main().
To use the world file you just created, load it with loadWorld in your main program.
File should first contain a line specifying the integrator (EULER or RK4). Example: EULER Then, follows one line specifying the size of the timestep for the integrator, and an integer parameter n specifying that every nth timestep will actually be drawn (the other steps will only be used for internal calculation) Example: 0.001 5 Now, timestep equals 0.001. Every fifth time point will actually be drawn, i.e. frame1 <--> t = 0 frame2 <--> t = 0.005 frame3 <--> t = 0.010 frame4 <--> t = 0.015 ... Then, there should be three lines for physical parameters and external acceleration. Format is: kElastic dElastic kCollision dCollision fExternal.x fExternal.y fExternal.z mass Here kElastic = elastic coefficient of the spring (same for all springs except collision springs) dElastic = damping coefficient of the spring (same for all springs except collision springs) kCollision = elastic coefficient of collision springs (same for all collision springs) dCollision = damping coefficient of collision springs (same for all collision springs) mass = mass in kilograms of each of the 512 points which model the jello cube (mass assumed to be the same for all the points; total mass of the jello cube = 512 * mass) Example: 10000 25 10000 15 -1 0 0 0.002 Then, follow one or two lines for the inclined plane, with the obvious synax. If there is no inclined plane, there should be only one line with a 0 value. There is no line for the coefficient. Otherwise, there are two lines, first one containing 1, and the second one containing the coefficients. Example: 1 0.31 -0.78 0.5 5.39 Next, is the forceField block, first with the resolution and then the data, one point per row. Example: 30 < here 30 * 30 * 30 = 27 000 lines follow, each containing 3 real numbers> After this, there should be 1024 lines, each containing three floating-point numbers. The first 512 lines correspond to initial point locations. The last 512 lines correspond to initial point velocities. There should no blank lines anywhere in the file.
RK4 0.001000 1 10.000000 0.250000 1000.000000 0.250000 0.000000 0.000000 0.000000 0.001953 1 0.31 -0.78 0.5 5.39 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.142857 0.000000 0.000000 0.285714 0.000000 0.000000 0.428571 0.000000 0.000000 0.571429 0.000000 0.000000 0.714286 0.000000 0.000000 0.857143 0.000000 0.000000 1.000000 0.000000 0.142857 0.000000 0.000000 0.142857 0.142857 0.000000 0.142857 0.285714 0.000000 0.142857 0.428571 0.000000 0.142857 0.571429 0.000000 0.142857 0.714286 0.000000 0.142857 0.857143 0.000000 0.142857 1.000000 0.000000 0.285714 0.000000 0.000000 0.285714 0.142857 0.000000 0.285714 0.285714 0.000000 0.285714 0.428571 0.000000 0.285714 0.571429 0.000000 0.285714 0.714286 0.000000 0.285714 0.857143 0.000000 0.285714 1.000000 0.000000 0.428571 0.000000 0.000000 0.428571 0.142857 0.000000 0.428571 0.285714 0.000000 0.428571 0.428571 0.000000 0.428571 0.571429 0.000000 0.428571 0.714286 0.000000 0.428571 0.857143 0.000000 0.428571 1.000000 0.000000 0.571429 0.000000 0.000000 0.571429 0.142857 0.000000 0.571429 0.285714 0.000000 0.571429 0.428571 0.000000 0.571429 0.571429 0.000000 0.571429 0.714286 0.000000 0.571429 0.857143 0.000000 0.571429 1.000000 0.000000 0.714286 0.000000 0.000000 0.714286 0.142857 0.000000 0.714286 0.285714 0.000000 0.714286 0.428571 0.000000 0.714286 0.571429 0.000000 0.714286 0.714286 0.000000 0.714286 0.857143 0.000000 0.714286 1.000000 0.000000 0.857143 0.000000 0.000000 0.857143 0.142857 0.000000 0.857143 0.285714 0.000000 0.857143 0.428571 0.000000 0.857143 0.571429 0.000000 0.857143 0.714286 0.000000 0.857143 0.857143 0.000000 0.857143 1.000000 0.000000 1.000000 0.000000 0.000000 1.000000 0.142857 0.000000 1.000000 0.285714 0.000000 1.000000 0.428571 0.000000 1.000000 0.571429 0.000000 1.000000 0.714286 0.000000 1.000000 0.857143 0.000000 1.000000 1.000000 0.142857 0.000000 0.000000 0.142857 0.000000 0.142857 0.142857 0.000000 0.285714 0.142857 0.000000 0.428571 0.142857 0.000000 0.571429 0.142857 0.000000 0.714286 0.142857 0.000000 0.857143 0.142857 0.000000 1.000000 0.142857 0.142857 0.000000 0.142857 0.142857 0.142857 0.142857 0.142857 0.285714 0.142857 0.142857 0.428571 0.142857 0.142857 0.571429 0.142857 0.142857 0.714286 0.142857 0.142857 0.857143 0.142857 0.142857 1.000000 0.142857 0.285714 0.000000 0.142857 0.285714 0.142857 0.142857 0.285714 0.285714 0.142857 0.285714 0.428571 0.142857 0.285714 0.571429 0.142857 0.285714 0.714286 0.142857 0.285714 0.857143 0.142857 0.285714 1.000000 0.142857 0.428571 0.000000 0.142857 0.428571 0.142857 0.142857 0.428571 0.285714 0.142857 0.428571 0.428571 0.142857 0.428571 0.571429 0.142857 0.428571 0.714286 0.142857 0.428571 0.857143 0.142857 0.428571 1.000000 0.142857 0.571429 0.000000 0.142857 0.571429 0.142857 0.142857 0.571429 0.285714 0.142857 0.571429 0.428571 0.142857 0.571429 0.571429 0.142857 0.571429 0.714286 0.142857 0.571429 0.857143 0.142857 0.571429 1.000000 0.142857 0.714286 0.000000 0.142857 0.714286 0.142857 0.142857 0.714286 0.285714 0.142857 0.714286 0.428571 0.142857 0.714286 0.571429 0.142857 0.714286 0.714286 0.142857 0.714286 0.857143 0.142857 0.714286 1.000000 0.142857 0.857143 0.000000 0.142857 0.857143 0.142857 0.142857 0.857143 0.285714 0.142857 0.857143 0.428571 0.142857 0.857143 0.571429 0.142857 0.857143 0.714286 0.142857 0.857143 0.857143 0.142857 0.857143 1.000000 0.142857 1.000000 0.000000 0.142857 1.000000 0.142857 0.142857 1.000000 0.285714 0.142857 1.000000 0.428571 0.142857 1.000000 0.571429 0.142857 1.000000 0.714286 0.142857 1.000000 0.857143 0.142857 1.000000 1.000000 0.285714 0.000000 0.000000 0.285714 0.000000 0.142857 0.285714 0.000000 0.285714 0.285714 0.000000 0.428571 0.285714 0.000000 0.571429 0.285714 0.000000 0.714286 0.285714 0.000000 0.857143 0.285714 0.000000 1.000000 0.285714 0.142857 0.000000 0.285714 0.142857 0.142857 0.285714 0.142857 0.285714 0.285714 0.142857 0.428571 0.285714 0.142857 0.571429 0.285714 0.142857 0.714286 0.285714 0.142857 0.857143 0.285714 0.142857 1.000000 0.285714 0.285714 0.000000 0.285714 0.285714 0.142857 0.285714 0.285714 0.285714 0.285714 0.285714 0.428571 0.285714 0.285714 0.571429 0.285714 0.285714 0.714286 0.285714 0.285714 0.857143 0.285714 0.285714 1.000000 0.285714 0.428571 0.000000 0.285714 0.428571 0.142857 0.285714 0.428571 0.285714 0.285714 0.428571 0.428571 0.285714 0.428571 0.571429 0.285714 0.428571 0.714286 0.285714 0.428571 0.857143 0.285714 0.428571 1.000000 0.285714 0.571429 0.000000 0.285714 0.571429 0.142857 0.285714 0.571429 0.285714 0.285714 0.571429 0.428571 0.285714 0.571429 0.571429 0.285714 0.571429 0.714286 0.285714 0.571429 0.857143 0.285714 0.571429 1.000000 0.285714 0.714286 0.000000 0.285714 0.714286 0.142857 0.285714 0.714286 0.285714 0.285714 0.714286 0.428571 0.285714 0.714286 0.571429 0.285714 0.714286 0.714286 0.285714 0.714286 0.857143 0.285714 0.714286 1.000000 0.285714 0.857143 0.000000 0.285714 0.857143 0.142857 0.285714 0.857143 0.285714 0.285714 0.857143 0.428571 0.285714 0.857143 0.571429 0.285714 0.857143 0.714286 0.285714 0.857143 0.857143 0.285714 0.857143 1.000000 0.285714 1.000000 0.000000 0.285714 1.000000 0.142857 0.285714 1.000000 0.285714 0.285714 1.000000 0.428571 0.285714 1.000000 0.571429 0.285714 1.000000 0.714286 0.285714 1.000000 0.857143 0.285714 1.000000 1.000000 0.428571 0.000000 0.000000 0.428571 0.000000 0.142857 0.428571 0.000000 0.285714 0.428571 0.000000 0.428571 0.428571 0.000000 0.571429 0.428571 0.000000 0.714286 0.428571 0.000000 0.857143 0.428571 0.000000 1.000000 0.428571 0.142857 0.000000 0.428571 0.142857 0.142857 0.428571 0.142857 0.285714 0.428571 0.142857 0.428571 0.428571 0.142857 0.571429 0.428571 0.142857 0.714286 0.428571 0.142857 0.857143 0.428571 0.142857 1.000000 0.428571 0.285714 0.000000 0.428571 0.285714 0.142857 0.428571 0.285714 0.285714 0.428571 0.285714 0.428571 0.428571 0.285714 0.571429 0.428571 0.285714 0.714286 0.428571 0.285714 0.857143 0.428571 0.285714 1.000000 0.428571 0.428571 0.000000 0.428571 0.428571 0.142857 0.428571 0.428571 0.285714 0.428571 0.428571 0.428571 0.428571 0.428571 0.571429 0.428571 0.428571 0.714286 0.428571 0.428571 0.857143 0.428571 0.428571 1.000000 0.428571 0.571429 0.000000 0.428571 0.571429 0.142857 0.428571 0.571429 0.285714 0.428571 0.571429 0.428571 0.428571 0.571429 0.571429 0.428571 0.571429 0.714286 0.428571 0.571429 0.857143 0.428571 0.571429 1.000000 0.428571 0.714286 0.000000 0.428571 0.714286 0.142857 0.428571 0.714286 0.285714 0.428571 0.714286 0.428571 0.428571 0.714286 0.571429 0.428571 0.714286 0.714286 0.428571 0.714286 0.857143 0.428571 0.714286 1.000000 0.428571 0.857143 0.000000 0.428571 0.857143 0.142857 0.428571 0.857143 0.285714 0.428571 0.857143 0.428571 0.428571 0.857143 0.571429 0.428571 0.857143 0.714286 0.428571 0.857143 0.857143 0.428571 0.857143 1.000000 0.428571 1.000000 0.000000 0.428571 1.000000 0.142857 0.428571 1.000000 0.285714 0.428571 1.000000 0.428571 0.428571 1.000000 0.571429 0.428571 1.000000 0.714286 0.428571 1.000000 0.857143 0.428571 1.000000 1.000000 0.571429 0.000000 0.000000 0.571429 0.000000 0.142857 0.571429 0.000000 0.285714 0.571429 0.000000 0.428571 0.571429 0.000000 0.571429 0.571429 0.000000 0.714286 0.571429 0.000000 0.857143 0.571429 0.000000 1.000000 0.571429 0.142857 0.000000 0.571429 0.142857 0.142857 0.571429 0.142857 0.285714 0.571429 0.142857 0.428571 0.571429 0.142857 0.571429 0.571429 0.142857 0.714286 0.571429 0.142857 0.857143 0.571429 0.142857 1.000000 0.571429 0.285714 0.000000 0.571429 0.285714 0.142857 0.571429 0.285714 0.285714 0.571429 0.285714 0.428571 0.571429 0.285714 0.571429 0.571429 0.285714 0.714286 0.571429 0.285714 0.857143 0.571429 0.285714 1.000000 0.571429 0.428571 0.000000 0.571429 0.428571 0.142857 0.571429 0.428571 0.285714 0.571429 0.428571 0.428571 0.571429 0.428571 0.571429 0.571429 0.428571 0.714286 0.571429 0.428571 0.857143 0.571429 0.428571 1.000000 0.571429 0.571429 0.000000 0.571429 0.571429 0.142857 0.571429 0.571429 0.285714 0.571429 0.571429 0.428571 0.571429 0.571429 0.571429 0.571429 0.571429 0.714286 0.571429 0.571429 0.857143 0.571429 0.571429 1.000000 0.571429 0.714286 0.000000 0.571429 0.714286 0.142857 0.571429 0.714286 0.285714 0.571429 0.714286 0.428571 0.571429 0.714286 0.571429 0.571429 0.714286 0.714286 0.571429 0.714286 0.857143 0.571429 0.714286 1.000000 0.571429 0.857143 0.000000 0.571429 0.857143 0.142857 0.571429 0.857143 0.285714 0.571429 0.857143 0.428571 0.571429 0.857143 0.571429 0.571429 0.857143 0.714286 0.571429 0.857143 0.857143 0.571429 0.857143 1.000000 0.571429 1.000000 0.000000 0.571429 1.000000 0.142857 0.571429 1.000000 0.285714 0.571429 1.000000 0.428571 0.571429 1.000000 0.571429 0.571429 1.000000 0.714286 0.571429 1.000000 0.857143 0.571429 1.000000 1.000000 0.714286 0.000000 0.000000 0.714286 0.000000 0.142857 0.714286 0.000000 0.285714 0.714286 0.000000 0.428571 0.714286 0.000000 0.571429 0.714286 0.000000 0.714286 0.714286 0.000000 0.857143 0.714286 0.000000 1.000000 0.714286 0.142857 0.000000 0.714286 0.142857 0.142857 0.714286 0.142857 0.285714 0.714286 0.142857 0.428571 0.714286 0.142857 0.571429 0.714286 0.142857 0.714286 0.714286 0.142857 0.857143 0.714286 0.142857 1.000000 0.714286 0.285714 0.000000 0.714286 0.285714 0.142857 0.714286 0.285714 0.285714 0.714286 0.285714 0.428571 0.714286 0.285714 0.571429 0.714286 0.285714 0.714286 0.714286 0.285714 0.857143 0.714286 0.285714 1.000000 0.714286 0.428571 0.000000 0.714286 0.428571 0.142857 0.714286 0.428571 0.285714 0.714286 0.428571 0.428571 0.714286 0.428571 0.571429 0.714286 0.428571 0.714286 0.714286 0.428571 0.857143 0.714286 0.428571 1.000000 0.714286 0.571429 0.000000 0.714286 0.571429 0.142857 0.714286 0.571429 0.285714 0.714286 0.571429 0.428571 0.714286 0.571429 0.571429 0.714286 0.571429 0.714286 0.714286 0.571429 0.857143 0.714286 0.571429 1.000000 0.714286 0.714286 0.000000 0.714286 0.714286 0.142857 0.714286 0.714286 0.285714 0.714286 0.714286 0.428571 0.714286 0.714286 0.571429 0.714286 0.714286 0.714286 0.714286 0.714286 0.857143 0.714286 0.714286 1.000000 0.714286 0.857143 0.000000 0.714286 0.857143 0.142857 0.714286 0.857143 0.285714 0.714286 0.857143 0.428571 0.714286 0.857143 0.571429 0.714286 0.857143 0.714286 0.714286 0.857143 0.857143 0.714286 0.857143 1.000000 0.714286 1.000000 0.000000 0.714286 1.000000 0.142857 0.714286 1.000000 0.285714 0.714286 1.000000 0.428571 0.714286 1.000000 0.571429 0.714286 1.000000 0.714286 0.714286 1.000000 0.857143 0.714286 1.000000 1.000000 0.857143 0.000000 0.000000 0.857143 0.000000 0.142857 0.857143 0.000000 0.285714 0.857143 0.000000 0.428571 0.857143 0.000000 0.571429 0.857143 0.000000 0.714286 0.857143 0.000000 0.857143 0.857143 0.000000 1.000000 0.857143 0.142857 0.000000 0.857143 0.142857 0.142857 0.857143 0.142857 0.285714 0.857143 0.142857 0.428571 0.857143 0.142857 0.571429 0.857143 0.142857 0.714286 0.857143 0.142857 0.857143 0.857143 0.142857 1.000000 0.857143 0.285714 0.000000 0.857143 0.285714 0.142857 0.857143 0.285714 0.285714 0.857143 0.285714 0.428571 0.857143 0.285714 0.571429 0.857143 0.285714 0.714286 0.857143 0.285714 0.857143 0.857143 0.285714 1.000000 0.857143 0.428571 0.000000 0.857143 0.428571 0.142857 0.857143 0.428571 0.285714 0.857143 0.428571 0.428571 0.857143 0.428571 0.571429 0.857143 0.428571 0.714286 0.857143 0.428571 0.857143 0.857143 0.428571 1.000000 0.857143 0.571429 0.000000 0.857143 0.571429 0.142857 0.857143 0.571429 0.285714 0.857143 0.571429 0.428571 0.857143 0.571429 0.571429 0.857143 0.571429 0.714286 0.857143 0.571429 0.857143 0.857143 0.571429 1.000000 0.857143 0.714286 0.000000 0.857143 0.714286 0.142857 0.857143 0.714286 0.285714 0.857143 0.714286 0.428571 0.857143 0.714286 0.571429 0.857143 0.714286 0.714286 0.857143 0.714286 0.857143 0.857143 0.714286 1.000000 0.857143 0.857143 0.000000 0.857143 0.857143 0.142857 0.857143 0.857143 0.285714 0.857143 0.857143 0.428571 0.857143 0.857143 0.571429 0.857143 0.857143 0.714286 0.857143 0.857143 0.857143 0.857143 0.857143 1.000000 0.857143 1.000000 0.000000 0.857143 1.000000 0.142857 0.857143 1.000000 0.285714 0.857143 1.000000 0.428571 0.857143 1.000000 0.571429 0.857143 1.000000 0.714286 0.857143 1.000000 0.857143 0.857143 1.000000 1.000000 1.000000 0.000000 0.000000 1.000000 0.000000 0.142857 1.000000 0.000000 0.285714 1.000000 0.000000 0.428571 1.000000 0.000000 0.571429 1.000000 0.000000 0.714286 1.000000 0.000000 0.857143 1.000000 0.000000 1.000000 1.000000 0.142857 0.000000 1.000000 0.142857 0.142857 1.000000 0.142857 0.285714 1.000000 0.142857 0.428571 1.000000 0.142857 0.571429 1.000000 0.142857 0.714286 1.000000 0.142857 0.857143 1.000000 0.142857 1.000000 1.000000 0.285714 0.000000 1.000000 0.285714 0.142857 1.000000 0.285714 0.285714 1.000000 0.285714 0.428571 1.000000 0.285714 0.571429 1.000000 0.285714 0.714286 1.000000 0.285714 0.857143 1.000000 0.285714 1.000000 1.000000 0.428571 0.000000 1.000000 0.428571 0.142857 1.000000 0.428571 0.285714 1.000000 0.428571 0.428571 1.000000 0.428571 0.571429 1.000000 0.428571 0.714286 1.000000 0.428571 0.857143 1.000000 0.428571 1.000000 1.000000 0.571429 0.000000 1.000000 0.571429 0.142857 1.000000 0.571429 0.285714 1.000000 0.571429 0.428571 1.000000 0.571429 0.571429 1.000000 0.571429 0.714286 1.000000 0.571429 0.857143 1.000000 0.571429 1.000000 1.000000 0.714286 0.000000 1.000000 0.714286 0.142857 1.000000 0.714286 0.285714 1.000000 0.714286 0.428571 1.000000 0.714286 0.571429 1.000000 0.714286 0.714286 1.000000 0.714286 0.857143 1.000000 0.714286 1.000000 1.000000 0.857143 0.000000 1.000000 0.857143 0.142857 1.000000 0.857143 0.285714 1.000000 0.857143 0.428571 1.000000 0.857143 0.571429 1.000000 0.857143 0.714286 1.000000 0.857143 0.857143 1.000000 0.857143 1.000000 1.000000 1.000000 0.000000 1.000000 1.000000 0.142857 1.000000 1.000000 0.285714 1.000000 1.000000 0.428571 1.000000 1.000000 0.571429 1.000000 1.000000 0.714286 1.000000 1.000000 0.857143 1.000000 1.000000 1.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 -10.000000 -15.000000 -5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000