uThere
Home Products Videos Support
 
Products : Ground Control : Documentation :Waypoints : Scan Area User Interface Logic

Scan Area User Interface Logic

Objective:

Enable user to define and change outline and parameters of a scan pattern easily and intuitively, without using waypoints themselves as the outline of the scan area.

Allow multiple scan areas to be defined in a single WaypointList

(click on images below to access original .svg vector drawing which you can edit with free software such as Inkscape)
In the source code, see: WaypointScanArea.cs (work in progress)  

If user wants the scan pattern to occur after an existing Waypoint, he selects that waypoint. (Otherwise, if there are no waypoints (WaypointList is empty) or the user wants to add scan pattern after last waypoint, skip this step)

User selects menu item "Add Scan Pattern: Lawnmower" (or Interleaved, Creeping Line, etc...)
[write code for Interleaved now, defer others until later]

A new WaypointScanArea is generated using all defaults.

The WaypointScanArea.Outline is a simple square polygon oriented north-south with default dimensions = 1000 feet x 1000 feet. It is displayed as a wide semitransparent purple line.

A purple pentagon is displayed at each vertice of WaypointScanArea.Outline. The user will drag these pentagons to change the shape of the polygon.

If a waypoint was not selected by the user (Context.WaypointSelected==null), select the last waypoint in the WaypointList.

The corner of the WaypointScanArea will initially coincide with the selected waypoint. Which corner?: The user would probably like to keep the plane progressing in the same general direction as it was flying when it came to the selected waypoint. So, choose the corner which will put the scan area square as far as possible from the waypoint prior to the selected waypoint. For example, in this diagram, the waypoint is to the southeast of selected waypoint, so we locate the southeast corner of the scan area on top of the selected waypoint. The user will be able to drag the vertices if this isn't what he wants.

If there are no waypoints in the WaypointList, center the scan area on the current displayed area.

The WaypointScanArea.ScanDirection is represented by semitransparent wide arrow. The base of the arrow is located at the center of the WaypointScanArea. The length is fixed. (make always i.e. 1/5 of the position display window width/height?) The user may drag the tip of the arrow to change the scan direction.

In the WaypointScanArea structure, we set WaypointScanArea.WaypointPrevious to the selected waypoint (WaypointList[2] in this example), and WaypointScanArea.WaypointNext to the waypoint which followed the selected waypoint (WaypointList[3] in this example), or to null if the selected waypoint is the last in WaypointList. If there are no waypoints in the WaypointList, set both WaypointPrevious and WaypointNext to null.

This new WaypointScanArea is appended to WaypointList.WaypointScanAreaList.

 

Waypoints comprising the scan pattern are immediately automatically generated and added to WaypointList. (The user will never see a WaypointScanArea that isn't filled with a scan pattern of waypoints.)

The first new waypoint (WaypointList[5] in this example) is linked after the selected waypoint = WaypointScanArea.WaypointPrevious (WaypointList[2] in this example). It is placed on top of the selected waypoint.

The last new waypoint (WaypointList[11] in this example) is linked to WaypointScanArea.WaypointNext (WaypointList[5] in this example.) If there was no

The WaypointScanArea "owns" these new waypoints. (They all have Waypoint.WaypointScanArea = ScanArea.) Only the WaypointScanArea is allowed to modify / move or delete these waypoints as its parameters are changed. These waypoints can be selected but not moved / modified individually by the user. They are displayed with small squares like waypoints, but with a lighter color of green.

 

The user can modify the scan area by dragging a pentagon or by selecting one and choosing menu item "Add Scan Area Vertice" or "Delete Scan Area Vertice"

A WaypointScanArea can be selected by clicking on a pentagon, segment of the outline polygon, or segment of a waypoint in the scan pattern. (set Context.WaypointScanAreaSelected). In menu, enable "Delete Scan Area" and "Scan Area Properties".

A vertice can be selected by clicking on a polygon. (set Context.WaypointScanAreaSelected.OutlineVerticeSelected). The pentagon is displayed with a darker color to give visual indication that it is selected. In the menu, enable "Add Scan Area Vertice" and enable "Delete Scan Area Vertice" unless there are only 3 vertices (Context.WaypointScanAreaSelected.Outline.Count == 3)

When a WaypointScanArea or vertice are selected, its parameters are displayed and can be edited numerically in the "Waypoint Detail" window.

As a vertice is moved /added/deleted, the scan pattern waypoints are instantly, continuously updated.

The distance between scan rows can be modified by dragging any segment closer or further from the previous segment. (we can defer programming this logic until later)

When displaying and selecting / clicking on objects that overlap at the same location, use this precedence, from "top" to "bottom":

ScanDirection arrowhead

Outline vertice pentagon

Regular waypoint (Waypoint.WaypointScanArea == null)

Scan area waypoint (Waypoint.WaypointScanArea != null)

Scan segment

 

 

 

 

 

The user may drag the tip of the arrow to change the scan direction. Waypoints will be immediately / continuously updated as the arrow is dragged. The arrow's lengh and base will remain fixed as it is dragged, like the hand of a clock (just use angle between cursor and base of arrow).

If the user wishes to create a second WaypointScanArea to immediately follow the first one, note that there must necessarily be a regular Waypoint inserted between them so that the sequence of Waypoint / WaypointScanArea execution will be defined.

If user selects "Add new scan area" with no regular waypoints selected and the last waypoint in the WaypointList is associated with an existing scan area, you must generate a waypoint to follow the scan area. Place it on top of the existing last waypoint.

 

 

 

usa flag RubyTM and other uThere products are manufactured in the USA Mission  | About  | Testimony | Mailing List | Satisfaction | Policies | Contact Copyright © 2011-2020 uThere, LLC