## Project 5: Vector Field / Flow Visualization

### Ryan Miller - [email protected]

#### Task 1 - Glyphs (threeplanes[.py])

Create three planes plane orthogonal to the X axis of the volume and sample the velocity field on those planes
Show the delta wing geometry in each image for context

This visualization introduced us to the vtkGlyph3D filter, with arrow glyphs being used in this task. The glyphs follow the direction of the velocity vector field, and correspond in color and size to the magnitude. The three planes serve as "slices" of the data, preventing the visual occlusion seen in subsequent tasks.

How were the locations of the planes chosen and what observations led to your decision?
To choose the most visually-interesting plane locations, I used a temporary slider that moved a single plane along the delta wing, sampling the velocity vector field in each location. From here, I noticed a few key spots where the velocity seemed to circulate around parts of the wing and reached varying (non-zero) velocity magnitudes. The front of the wing seemed to have the highest velocities in the data set, but the tail of the wing also showed a large disturbance.

#### Task 2 - Streamlines, Stream Tubes and Stream Surfaces

Use streamlines, stream tubes and stream surfaces to show how the flow swirls around the vortices present in the data
Show the delta wing geometry in each image for context
The corresponding color scale should be provided for reference

These visualizations also observed the velocity vector field, but instead used an integrative approach to construct streamlines, stream tubes, and a stream surface that follow the direction of the vector field.

Streamlines: large number of streamlines (e.g., 120) (streamlines[.py])
Stream tubes: small number of stream tubes (streamtubes[.py])
Stream surface: seeded along an appropriately chosen rake (streamsurface[.py])

How were the seeding locations chosen and how do they relate to the observations made in Task 1?
From Task 1, I realized the best seeding locations would either be in front, or behind the tail of the delta wing. For streamlines and stream tubes, I start the seed for them from the front of the wing, letting the natural flow allow them to swirl as they reach the tail of the wing. For the stream surface, however, starting from the front of the wing missed many important structures along the wing, so I instead start with a rake parallel to the tail and integrate backwards toward the front of the wing. Many of the parameters (ie., number of stream lines, location of rake) were chosen based on trial-and-error and seeing what looked best. I chose to make the stream surface somewhat transparent (opacity = 0.4) to show how the surface wraps around itself as the flow swirls.

#### Task 3 - Combination of Scalar and Vector Visualization (combination.[py])

Combine isosurfaces of vorticity magnitude with streamlines
Visualize the relationship between the streamlines' geometry and the shape of the isosurfaces
Show the delta wing geometry in each image for context

The vorticity magnitude, although different from the data set for the last project, exhibits many of the same characteristics such as rippling recirculation near the front of the delta wing. Likewise, the stream lines wrap themselves around these vortices, showing a clear relation between the vorticity magnitude and the velocity vector field data. I made the isosurfaces somewhat transparent (opacity = 0.4-0.6) so streamlines swirling within the surfaces remain clear. The isosurface also gives clues as to why the streamlines appear the way they do, such as the rather straight streamlines near the center of the wing following the flat, broad area of the delta wing.

Describe the things you tried before arriving at the proposed solution and explain why your final selection is a good one.
I didn't need to adjust the streamline parameters very much once I found an adequate isosurface to represent the vorticity magnitude data. I used a similar technique from the last project, using sliders to find boundaries in data that I could represent with multiple surfaces (each using a color transfer function) for the final visualization. From here, I adjusted opacity until the streamlines remained clear, and I arrived at the visualization shown below.