Documentation is available here.

Please report any bugs you discover here.

A JSON file can be used by clicking on the "Open" button. By using this file format, the coverage radius, radius of uncertainty, and number of potential locations and their locations can be set.

**Moving nodes.**
Moving an existing node can be accomplished by simply clicking on a node and then dragging the node
to the desired location. The location and coverage circles will move along with the mouse.
After the node is dropped into the new location the complex will be recalculated and rendered.

**Deleting nodes.**
Users can also select a node by clicking on it. Pressing the "delete" key on their keyboard
will delete the node. To cancel or exit press the "esc" key.

**Adding nodes.**
To add a node, a user must click on the "Add node" button in the control panel. Their cursor will change to a
crosshairs and upon clicking on a location in the graphing area a node will appear and the complex updated. Pressing
the "esc" key will exit out of this mode.

**Updating potential locations.**
Each sensor also has a certain number of potential locations. By pressing the "Update" button, the potential
locations for each sensor are given new random coordinates within the radius of uncertainty. The number of potential
locations can be updated in the same way as the number of sensors, by updating the number in the text box and
clicking the "Update" button.

**Updating coverage radius.**
Tied to sensor locations is the coverage radius of each sensor. This can be updated by
either adjusting the slider under the "Coverage radius" heading or updating the value in the
text box below it. The maximum value for the coverage radius is initialized as the the larger
value between the specified value given in the load configuration and half of the largest range
between sensors on the x-axis. This maximum value can also be changed by clicking on the
"Max" button and typing in the desired maximum radius.

**Updating radius of uncertainty.**
The radius of uncertainty is the radius from the anchor location that potential locations
can exist in. This radius can be changed just as the coverage radius changes: either by moving
the slider or updating the value in the text box. The maximum radius of uncertainty is set to
fifty. The radius of uncertainty is initially set to ten. If the radius is increased, the potential
locations will not update, unless the "Update" button is pressed. Decreasing the radius of
uncertainty below ten will recalculate potential locations.

**Nodes** correspond to sensor locations. Hovering over a node will highlight the coverage radius for that
individual sensor.

**Potential nodes** correspond to the randomly placed potential locations for each node.

**Node coverage ** corresponds to the transparent purple circles. The smaller of these circles designates the
node coverage radius, while the larger represents the coverage radius plus the radius of uncertainty.

**Edges** correspond to the lines connecting each node, colored by their probability. An edge only exists if the
coverage radii overlap for two nodes. Hovering over an edge will highlight the edge and its corresponding nodes. A
small information box will appear near the cursor displaying the probability of that edge.

**Possible edges** correspond to the edges that exist between potential locations within the coverage radii.
Potential edges are shown as black lines.

**Faces** correspond to filled triangles indicating where three points are mutually connected, colored by their
probability. Hovering over a face will highlight the face along with the corresponding three points and edges that
form the triangle. A small information box will appear near the cursor displaying the probability of that face.

The presence of a face depends on which complex type you select:

Čechpertains to a simplicial complex constructed such that where the coverage for each of the three nodes overlaps. "Good" coverage can be guaranteed here and represents the geometric area as a face or 2-simplex in topological space. (Reference)

Vietoris-Ripsis another, less computationally expensive way of calculating coverage. In this simplicial complex, faces are generated when 3 points are all pairwise within range of each other with no requirement that all three nodes simultaneously overlap. The advantage of this over the Čech complex is that it is computationally less expensive. The disadvantage lies in the fact that there is the possibility of small coverage gaps within each face where the coverage radii do not all intersect the circumcenter of the resulting triangle in geometric space. (Reference)