Cotton was the name of my final year solo project at Imperial.

As the final implementation was on a solo server running Tomcat and postgreSQL, I cannot provide an online demonstation of my final project. If anyone has some spare NT sever space, get in contact!

The initial project proposal
An introduction to Hyperbolic Trees
An outline of a Cotton system
A Java demonstration of a Hyperbolic Tree Interface
A mockup of the Cotton GUI
Possible applications of Cotton

Initial Proposal

Motivation

After exhausting many notebooks with ideas for projects and reminders of work or appointments that needed to be kept, I have decided to develop a program that will allow me to organise and keep track of areas of interest and ideas.

Plan

I plan to develop a concept tracking and recording system which will use a variety of visualisation techniques to explore and relate concepts. The main interface to the program will be a hyperbolic tree browser which will allow for the complete structure to be displayed on screen at any time.

I will develop the program in Java, allowing the code to be run on any suitable java compatible platform. This should also aid networking capability, allowing users of the software to exchange concepts and collections of media.

In order to make the system as easy to use and intuitive as possible as much as possible cotton should operate under the drag and drop paradigm - i.e. trees (and branched of trees) should be able to moved and linked at will.

Introduction to Hyperbolic Trees

A Hyperbolic tree is similar to the standard Tree data structure, with one difference. Instead of being displayed in standard Euclidean space, a Hyperbolic tree viewer will use hyperbolic functions such as sinh and cosh to display the data structure.

This gives an effect similar to mapping a plane onto a sphere, distorting the tree to make it look enlarged in the centre of the viewer, and smaller on the edges of the display window. By this method the viewer can see all the data in the tree at all times, it may be distorted but it is not invisible to the viewer.

For example this is how a tree might look in a standard tree viewer.

Outline of a Cotton System

Diagram of the dataflow of a Cotton System

In order to ensure that data integrity is maintained over the system, Java RMI (Remote Method Invocation) technology will be used. In this way several users can be interacting with the same tree at once, and watching the results of others input in realtime.

The user with only an arrow coming from the server is a viewer. As user such as this will merely view the changing tree, without having editing control of the system. Please see the applications section to see how this feature could be utilised.

The arrows leading in and out of the server and going off the diagram represent the flow of data from other servers I am hoping to add the feature to the system at the end of the project in order to let the system truly network.

Hyperbolic Tree Demo

Demo using implementation from Andreas Hadjiprocopis and his site at the School of Informatics at City University.

Mockup of Cotton GUI

Above is a basic mockup of the Cotton GUI.
The system should look very similar to the demo, but when the mouse is clicked and held over a node, a menu will pop similar to the one above.

The aim is for the menu interface to be a minimal and simple as possible to allow any kind of user to work with the interface in an intuitive way, while still maintaining a sense of how the data is related.

Applications of a Cotton System

The flexibility of such a system should enable countless applications. Below are a few I have come up with.

  • A Discussion Board. Subjects could be posted and replied to in real time, complete with links to external media

  • A Multimedia Library. A Cotton system would be well suited to allowing users to browse a massive library of multimedia while still retaining their bearings.

  • An Instruction Manual. A Cotton system deployed on a touch sensitive PDA would be an excellent interface to a complex set of instructions with which to complete a chosen task