Peter Young
Visualisation Research Group


Select the above image to enter the 3D visualisation
or you can view the full size image shown above.

About Towers

The Towers representation was created to try and address some of the problems encountered in creating the CallStax visualisation. That is, a representation was required which was unique, had a highly distinctive appearance and a consistent overall size and shape. The Axles visualisation failed on a number of these points. Although Axles provides individuality, it does this by representing the control structure of the function. Unfortunately it is quite common for different functions to share a similar control structure, thus violating the prerequisite of representations being unique. Additionally, the Axles representation has an extremely variable overall size and shape making it unsuitable for inclusion within CallStax.

Towers concentrates on providing these three essential properties, but in doing so it attempts to provide additional information on the function. The main component of the towers representation which attributes to it’s individuality is a simplified visualisation of the function control structure. This visualisation is not intended to provide detailed information regarding the function, it is intended to provide it with a ‘shape’ or ‘feel’ allowing distinction between different representations. As mentioned above, this control structure representation is insufficient to provide individuality. Additionally this representation can become quite complex and as a result different representations will become less distinct. To combat this problem additional features are added which both increase the distinctive appearance and individuality while providing more useful information about the function.

It was found that some form of base or separator was required for the representations. This was in order to prevent adjacent representations being mistaken for a single representation, especially when stacked closely as in CallStax. This base was provided by a disc which doubles as a simple pie-chart. This chart presents information about the function, in this case it shows the proportions of the lines of code in the function: code lines, blank lines and comment lines. Another feature is the addition of two bar charts, represented as coloured towers, which provide simple metrics information, in this case they show the McCabe complexity metric and lines of code metric as a proportion of the maximum within the program (i.e. the longest function will have 100% LOC). The combination of these bars and the base disc give the representation a notion of size and shape, they provide a consistent volume to the representations and act as a good reference point when perceiving depth and position. Finally, in order to provide slightly further individuality, each representation is given a code disc, beneath the base disc. This code is represented as four coloured segments each with a possible four colours and repeated in each quarter of the disc circumference. Each representation is assigned it’s own code, this coupled with the other information presented should effectively ensure that no two representations will be identical (though of course it is still theoretically possible).

Figure 1. Towers representation

Figure 1 shows the Towers representation of seven different functions. The main features of this representation are annotated and listed below:

The towers representation provides a high degree of individuality by incorporating various forms of information regarding the function they represent. Unfortunately it was found that when viewing a large visualisation of towers it was very difficult to differentiate between similar representations. It is believed that this could be due to a number of things:

Figure 2.
Figure 3.
Figure 4.
View in 3D
View in 3D
View in 3D

The problems described above can be seen best when considering figures 2, 3 and 4 (select each figure to view full size). Figure 1. shows the Towers representations for the seven functions in a small program. When viewed like this it is apparent that each of the functions and representations are distinctive and unique, at this stage the representation seems effective. Figure 2. shows a CallStax visualisation of the function calls within the same program (note the library routines do not have a Towers representation). This figure uses simple coloured blocks to identify each of the functions. Finally, Figure 3. shows the same CallStax visualisation but using the Towers representations instead. From this view we can see that the towers representation is of little use when grouped together in such densities. It becomes extremely difficult to identify either identical functions or distinguish between similar functions. The structure of the CallStax is also somewhat lost within the complexity.

This representation does still possesses a number of useful properties, but it's usefullness is limited by it's complexity. Some of the advantages of the Towers representation are:

About the demo

In order to view this demo visualisation you will require a browser with Superscape's Viscape VR plug-in installed. It would also be an advantage to have a high color display configured.

Navigation through the 3D environment can be facilitated simply by using the directional control icons at the bottom of the frame. Alternatively, a more efficient though trickier control method can be activated by selecting the 3D frame then pressing the space bar. This produces a white box called the dead zone. Moving the mouse out of this box will result in movement through the 3D world. Various methods of movement can be facilitated by using the left and right mouse buttons in conjunction with moving the pointer. The left mouse button allows rotation control over pitch and yaw (i.e. turning on the spot) and the right mouse button allows translation horizontally and vertically (moving left/right, up/down while facing the same direction).

This page is maintained by Peter Young, please send any comments, jokes, insults or general abuse to (

Last updated: Tuesday 13 May, 1997.