Project2W16
Contents |
Dolphin Network
This project is due on January 29th at 2pm. It needs to be demonstrated that Friday afternoon to the course staff in CSE basement lab 220. Like project one this is a team project for two people.
The goal of this project is to create a scientific data analysis application to learn more about the data collected about a group of 62 dolphins in a community living off Doubtful Sound, New Zealand. What is known about the dolphins are their names, as well as those other dolphins which they have frequent social interactions with. Here is a picture depicting the data as a 2D graph:
The dolphin network data is available as a GML file. The GML file describes a node-edge graph with the nodes being the dolphins and the edges their interactions. You will have to write a parser to load the file into your visualization application and then provide certain functionality to analyze the data. This GML parser in the C language can be used as starter code.
This project is for the Leap Motion or the Microsoft Kinect. Once your application runs you are only allowed to interact with it through gestures your device recognizes, no keyboard or mouse interactions are permitted.
Displaying the Graph (30 Points)
For the layout of the graph you should use a force directed algorithm. Here is one in JavaScript. You need to port (translate) it to your graphics environment, and make it work in 3D so that the nodes are laid out in 3D space, not just a plane.
Interaction Tasks (70 Points)
This homework project is mainly oriented around selection and manipulation. Therefore, you will need to implement the following functionality for your visualization application:
- Rotate the entire graph like with a trackball around the center of the screen.
- Zoom in and out of the data set. Repeated zoom steps should make the data set successively larger or smaller.
- Show all: when triggered, it will automatically zoom in or out to show the entire data set on the screen.
- Select a node and highlight it. This should display the dolphin's name somewhere on the screen. Additionally, three manipulation options should now be possible with the highlighted node:
- delete it (and its connections) and re-layout the remainder of the graph,
- show the direct connections (edges) as well as directly connected nodes of the selected node,
- and shift the graph (no zoom) so that the selected node is in the center of the screen.
- Multi-select: the user should be able to select multiple nodes in two ways (selection can be done in 2D, 3D is for extra credit) in order to then delete all those nodes or show all their direct connections (centering is not necessary for multi-select):
- Volume select: the user selects a rectangle or circle and all nodes within these get selected.
- Sequential select: the user can select multiple individual nodes, one at a time.
Extra Credit (10 Points)
Up to 10 points of extra credit can be earned for the following functionality:
1) Both volume select and sequential select need to be done in 3D. This means that volume select is based on a 3D box which the user draws/places or a sphere with center point and radius. The sequential select must allow full 3D control of which node is being selected. This implies that if one node is behind another the user should be able to select the node behind the one in the front. (5 points)
2) Selecting in 3D on a monoscopic monitor is quite difficult. Therefore you will need to implement one of the multiple methods discussed in class to emphasize the three dimensional structure of the graph network. (5 points)