Project Description
My project is a set of 3 visualization techniques to visualize 3 dimensional data sets of 3 dimensional vectors using smart particles (sparts). I use a set of C++ libraries called OpenSteer to control the particles themselves. The user is able to "spray" these particles towards a data set, and the particles react to the data in one of three ways.
First visualization, the particles may be given a set of lower and upper bounds for each the X, Y, and Z values of the data set (or one lower/upper bound for the magnitude for each red, green and blue). The particles will then, once fired towards the data set by the user, travel until they find a data point that matches those paremeters (at each frame each particle uses a tri-linear interpolation to determine the value of the data at its current location). If a particle finds a point of data that matches one or more of its parameters it will render a polygon at that point. The polygon will be a small square on a plane perpendicular to the vector of the data at that point, centered at that point. The color of the polygon can be determined in 3 ways, choosable by the user. The first way to determine color is XYZ Component based, in thie color mapping scheme, if the threshhold of X is satisfied, a polygon has a red component, Y, a green component, and Z a blue component, thus each polygon can by one of 2^3=8 colors. The second color mapping scheme is magnitude threshhold based. In this color scheme the magnitude of the point at which a polygon is rendered is checked vs the red magnitude thresshold, green magnitude threshhold, and blue magnitude threshhold, and again, for each check that is true the polygon is givin a corresponding componenent in that color. Again this has 2^3=8 possible colors. The last color mapping scheme is a color mapping that maps the magnitude at the point rendered on a standard blue to red color map, blue being smallest, red being largest, ranging from one standard deviation below the average of the data set to one standard deviation above.
The second visualization is a flowline visualization. In this visualization the sparts will again travel until they find data that matches the parameters set by the user. Upon finding said data the spart will then set its trajectory to that of the data it has encountered. It will proceed to travel along the trajectory of the data at its current location each frame until it is no longer in data that matches its parameters. As it travels it will leave behind it a line, ranging from blue to red depending on the magnitude of the data (simple blue to red linear color map from 1 standard deviation below the average magnitude of the data set to 1 standard deviation above).
The third visualization is what I call an "explosion visualization." Again, the spart fires towards the data, looking for data that meets the user-input parameters. However, in this visualization when a spart finds data that meets its parameters it analyzes a 6 nearby points (above, below, right left, forward, backward), and for each of the adjacent points that also meets the criteria of the user, this spart spawns another spart travelling towards that point. Each spart travelling within valid data also leave behind a line which is color mapped in the same way as the color mapping for visualization 2 (according to magnitude of data at that point).