For this part of your assignment, write a program that generates streamline visualization of a 3D vector field. The data set you will be using is from Hurrican Isabel . For this assignment, you will focus on a single time step (05), and the three velocity component fields: U, V, W. So, the relevant files are: Uf05.bin.gz, Vf05.bin.gz, and Wf05.bin.gz. These can be found in here .
Since the spatial resolution of this data is 500 x 500 x 100, there will be too many streamlines if you seeded every point. Instead, seed and generate only 1000 streamlines. Use a regular seeding strategy of 1 streamline every 50 grid points in X and Y, and 1 streamline every 10 grid points in Z.
For each streamline, integrate forwards and backwards using 4th order Runge Kutta . Stop integration when: (a) the streamline has exit the boundary of the data set, or (b) is not making any further progress e.g. when velocity is near 0, or (c) has reached a maximum number of integrations steps e.g. 100 in each direction.
Note: you will need to implement trilinear interpolation to find velocity values that are not at grid points.
Render each streamline as a polyline, colored by the velocity magnitude. First, find the range of velocity magnitude values for the time 05. That is, find the minimum and maximum velocity magnitudes over each grid point of this data set. Second, generate a color map (standard rainbow map is fine) over this range of magnitude values.
Allow the user to change the camera viewpoint (see program 0).
First, allow the user to vary the density of streamline seeding. Secondly, implement illuminated streamlines and add a toggle to turn this feature on and off. Compare your results with and without illuminated streamlines as one varies the viewing angle. Include these additional images in your writeup.
The basic requirements and those in option 1 require that the streamlines be pre-calculated. With rakes, you will interactively manipulate a rake and generate the streamlines on the fly.
A rake is represented by a short line segment that the user can pick and manipulate (translate and rotate) in space (see program 0). There are 10 seeding positions spread out evenly along the rake. If the rake has moved since its previous position, then the old streamlines are discarded, and 10 new ones are generated. Include additional images showing your rake in action in your writeup.
Last modified Tuesday, 22-Jan-2019 09:42:16 PST.