Today, we have come a long way since we first started off with the very simple random movement generator. First of all, a uniform quadratic grid has been implemented and we have made preparations for storing the velocity and density fields later on. The grid itself is an object and consists of several cells, which, in turn, are separate objects themselves. This way of implementing the grid greatly simplifies the way we handle all of the agents. For example, the spawning of the agents is carried out in each cell, which makes it really easy for us to specify in which part of the grid we want the agents to spawn. The idea is that you will eventually be able to choose which spawn configuration you want, simply by the input of a string. Another great advantage with treating every cell as a separate object is that each cell, by itself, can keep track of every agent within its boundary just by keeping the object references in a list. It is then really easy to pass on an agent to an adjacent cell, when necessary.
At this stage, the global planning is really easy. The agents are spawned in the outer cells, at random positions within each cell. The global planning is carried out simply by constructing a target position at the exact opposite side of the grid. The agents then move straight to that position without considering the other agents.
This is what our program does at this moment and the only thing we need to further implement, before the first prototype is completed, is a simple way of avoiding collision among the agents.