CMP 161 -- Programming Assignment 2
Due date:
10:00am, THURSDAY, 2/12/2004
Objectives:
Implement stream ribbon flow visualization.
Learn about streamlines,
numerical integration,
interactive seeding,
divergence in flow fields, and
how to extend Vtk functionality.
Make sure you really know about surface normals and
lighting.
Useful Links:
To Do:
-
Write a program that allows the user to interactively trace out
stream ribbons in a 3D flow field.
The program can be written from scratch with fltk+OpenGL (very time consuming),
or extend Vtk to support ribbons.
With the latter,
you will still need to provide graphical user interface,
preferrably with fltk also.
-
Your
data set
will be mostly computational fluid dynamics (CFD) data from NASA.
Those data sets are stored using the
Plot3D
format, and Vtk should have a
file reader
for it.
Try the
``bluntfin''
and the
``oxygen post''
data sets.
-
The NASA data sets are curvilinear data sets.
For testing out your program initially,
particularly if you're planning to implement this from scratch,
consider generating your own analytic 3D flow data sets using
a regular grid.
-
The required part of the stream ribbon implementation does not
require you to handle bifurcations or rips on the ribbons if it
encounters divergent regions in the flow.
-
The gui must allow the user to interactively place the seed location
for generating the stream ribbons.
-
Users must also be able to change their viewpoint
in addition to manipulating the placement of the ribbons.
-
Provide a toggle that would either keep (accumulate) the stream ribbons
or discard them (i.e. only 1 stream ribbon visible at any instant)
everytime the seed location is changed.
-
The color of the ribbon should be mapped to velocity magnitude.
Use the standard rainbow colormap.
You will need to find the min/max magnitudes for each dataset.
-
You must have lighting so that the ribbons are shaded properly.
Your light source may be fixed.
-
An optional item you can include is to support
``rakes''.
A rake is essentially a bunch of streamlines that are lined
up on a line segment.
The difficult part is that you will then have to deal with
rips or tears on the resulting stream surface.
Items To Submit:
Html page with description and images of your
project's output.
Make sure your links are all local
and relative to your submit directory.
Also make sure you have well documented code, makefile, README file, user guide, etc.
Do not submit the data files with your program, html, etc.!
Grading:
This program nominally accounts for 5% of your final grade. We must
be able to compile/test your code. Make sure that code and accompanying
make/project files, etc. must be tested for successful compilation at least on
the suns in the lab. For PC's, we will be using Visual C++. Also be sure to
include a README in your submission as to which platform to use. By the way,
if you're your development on PC's, you should be able to recompile your
fltk/opengl code on the suns with little or no modifications to your source.
Programs turned in at least a full day early will earn 1% bonus credit. Late
programs will be charged 1% late points. In addition, late programs will not
be accepted 24 hours past due date. Late programs and reports will not be
accepted for the final project. The bonus credits may be accumulated up to a
total of 50% toward program and final project credits. Programs are graded 80%
for functionality and correctness and 20% for style, readability,
documentation/writeup, and efficiency. Additional points may also be earned
for extra features.
Submission:
Create and submit a subdirectory called "prog2". It should contain
all the files you have to make your program compile/run. Include the other
items to be submitted in this directory as well. Submission must be done using
the submit utility from CATS.
-
To submit use: submit cmps161-ap.w04 prog2 files
-
To verify submission use: peek cmps161-ap.w04 prog2
These commands should work from any cats machine, but if there is a problem
try from unix.ic.
Last modified
Tuesday, 22-Jan-2019 09:42:16 PST.