Ingress is a game where real world locations are defined as portals. These portals can be linked to other portals. When 3 portals are linked in a triangle a "field" is created. These fields score "points" for your team.
I thought it might be useful to see on the map, fields which have already 2 of their sides completed, and to indicate the link which would complete them.
For example: in the image below we can see existing fields, we can also see that linking portal 1 to 3 would create a field. Sometimes these fields links are less obvious.
One of the rules of linking portals is that a new link may not cross an existing link. So portal 4 could not be linked to 3 because it would cross the 1 to 2 link.
To determine these "field finishing" links:
- Make a list of all existing links between portals.
- For each portal owned by your team move across all of its existing links(if it has any) to the next portal (e.g. 1 to 2), repeat from that portal to the next (e.g. 2 to 3)
- For all of the paths found check if the link back to the first portal (e.g. 3 to 1) can be made without crossing any link in the list of portal links made earlier.
Once the required links have been determined they need to be represented on the map. This done by drawing on a new map layer called 'Field Finisher', the links are indicated using red dotted lines.
The algorithm has been unit tested using Jasmine
The plug-in code can be download here field-finisher.user.js