In this section we discuss some of the practical issues for constructing visualizations. These issues fall between “theory” and “implementation.”
We define the set of tensors of separation rank at most by
The set is not a subspace, but is star shaped. Thus is connected and simply connected, and the global geometric and topological properties are simple. In order to study more interesting geometric and topological properties of , we will consider tensors that are positive scalar multiples of one another to be equivalent, and then ask about the geometry and topology of this reduced set.
A visualization may be initialized by one of
In random entry mode, the initial parameters for the visualization are:
With these parameters we can randomly generate , , and (in the real case) and start the visualization. To minimize distortions in the visualization, we normalize so .
In manual entry mode, the initial parameters for the visualization are:
The tensors , , and (in the real case) must have consistent dimension and resolutions , but may have different ranks.
If , , , , , or change then we must start the visualization over.
Although we talk of plotting points, we actually plot small discs of some radius . As noted earlier, we plot dark discs over light discs since the dark ones are more interesting. We may then have the case where many light discs are used, but are covered by dark discs and thus invisible. They then serve only to slow down the software and so we wish to discard them. Determining if one disc is covered by a set of discs is a fairly hard computational problem, so we instead use an easy heuristic. We first sort all points by their angle from small to large and initialize an empty list of kept points. Looping through the points we check to see if the point is within of any point in the kept list. If it is then we discard this point and if it is not then we put it in the kept list.
We may also end up with points too distant from the , to be meaningful. In this case we discard points outside of a user-defined rectangle.
If the rank of is less than or equal to , then and so it can be added to the visualization as a black point.
If the sum of the ranks of and is is less than or equal to , then all tensors on the line connecting and are in , and can be colored black in the visualization. In the real case the software then makes available the option to include the points on these lines. In the complex case this line is the entire visualization, so it is not interesting, but can be used for testing and debugging.
In the real case, if the sum of the ranks of , , and is is less than or equal to , then the entire plane should be black. This case is not interesting, but can be used for testing and debugging.
The first strategy for generating points is to generate tensors in and plot them using the projection technique to determine the appropriate location and angle/color of the plotted point. The strength of this approach is that we can rapidly generate many points. The weakness of this approach is that many of these points are light colored and so not very meaningful.
One technique is to simply generate elements of randomly.
A second technique is to start with a tensor that is in and on the line/plane, and perform a random walk. Under the assumption that , we can start with one of our . By randomly perturbing entries in its component vectors , we can generate a nearby point in . We could simply allow the random walk to continue, in which case we expect to drift away from the line/plane. Alternatively, we could reject moves that result in angles above some threshold and thereby restrict the walk to stay near the line/plane.
A third technique is to use a homotopy to smoothly morph one point in and on the line/plane to another such point. Calling the component vectors and , we can generate new component vectors for (or a larger interval). The intermediate points are in and we can hope stay near the line/plane.
A fourth technique is to start with a tensor in but not on the line/plane, and do a random walk with descent. Any move that increases the angle is rejected
Note: These techniques have been tested but are not in the current software implementation.
The main alternative strategy is to generate tensors on the line/plane and then test them for membership in . As noted earlier this test is imperfect, and we also wish to include tensors in that are near the line/plane in the visualization. We use the following procedure:
When the ALS algorithm produces with very small then we can be confident that (or is a limit of elements in ). However, if is large it may just indicate that the algorithm failed. False negatives may be identified when a light-colored point is surrounded by darker points. With repeated application, false negatives may also become covered by darker points.
The initial version of the ALS routine used here operates as follows.
On certain tests when it was know that the entire plotting plane was in , and thus we should get solid black, intead this routine achieved only yellow without even scattered black points (see A note on ALS failure). An improved version of the ALS routine was then implemented that operates as follows.
In the test cases where the initial ALS failed to find black, the improved ALS succeeded in at least finding dark blue. It was notably slower than the original, perhaps indicating that the original was getting stuck in local minima and terminating early.
As noted earlier, in the real case is at and is in the direction at location . To ease the cognitive burden on the user, coordinates that the user enters are scaled so that corresponds to . Similarly, in the complex case we normalize so that corresponds to .