CMP 161 -- Programming Assignment 1
Due date:
11:59 pm, Wed, 2/13/2019
Objectives:
Learn about sparse data interpolation,
and scalar and vector field visualization
using pseudo-coloring and streamlines respectively.
Description:
There are many meteorological sensors around us.
Each site usually have different types of sensors e.g. for
wind, humidity, etc. They're often referred to as metstations.
Your objective for this assignment is to create wind maps
based on the wind sensor readings from metstations within a geographical
region of interest.
A wind map is a dense representation of the wind pattern derived from
a few sensor readings.
The user should have the ability to see:
-
Velocity magnitude field that's colored coded using a standard heat map.
Allow the user to toggle this on or off.
This field is rendered first before any additional visualizations (see below)
are rendered.
When the toggle is off, this field is transparent i.e. defaults to
your background color.
-
One of the the following displays at a time, based on user selection:
-
Station wind -- an arrow glyph that is sized and colored to the velocity
magnitude is displayed at each station.
-
Arrow plot -- an arrow glyph at each grip point. Each arrow should also
be sized and colored to reflect the velocity information.
You can display an arrow glyph at every nth row and column.
-
Streamline -- use a regular seeding strategy, one at each location where
you had an arrow glyph at grid points. You can also use Euler integration.
Integrate both forward and backward from each seed point.
Data, Spatial Extent, Interpolation:
Data:
There are many potential sources of data for metstations
e.g. accuweather.com sites,
windalert.com, etc.
One that also provides the coordinates as well as real-time
data is the
Bay Area Air Quality Management District site.
To get to their metstations, scroll down to the Weather Data Map Layer,
and click on the navigation icon on the upper left of the map.
Select Meteorological Sites. Clicking on one of the triangular icons
will provide information about that site.
Associated meteorological data is obtained through a different page
e.g.
wind speed
Spatial extent:
After obtaining the coordinates for the set of metstations,
specify a spatial extent that is slightly larger so that
all the metstations are contained within this bounding box.
Interpolation:
Use inverse square distance Shepard's interpolation
to populate a sampling grid over the spatial extent.
The sampling grid should be at least 100x100.
Higher resolution will produce nicer/smoother looking images.
When placing glyphs for your arrow plots or seeding streamlines,
you can use every nth point of the sampling grid.
For example, with a 100x100 resolution grid, you could represent
the wind map with a 10x10 arrow plot, or by seeding 10x10 streamlines.
Bonus: (2% of your course grade)
For extra credit,
add another option of displaying the velocity field using
LIC.
Documentation
Each and every assignment should have proper documentation.
Documentation includes:
(i) code documentation,
(ii) user documentation,
(iii) technical writeup of the assignment.
The 1st two items are self-explanatory and you should have experience
with these from previous classes.
The 3rd item is a short technical paper, about 4-6 pages long,
that describes the problem, your approach, and results.
In this case, you want to talk about your data, representation, spatial extents
and resolution,
limitations/constraints and/or features of your implementation.
Also include a section on user interface
e.g. what's needed to run your code, how the user can access
the different features, etc.
If you observe something interesting in your data,
you may include that as well.
Make sure the captions for your images are clear.
Add relevant discussions about visualization choices/parameters that you've made,
advantages/disadvantages of different options, etc.
The technical paper should be a pdf file. Single spaced. You can use
a single column or a double column format. Font size should be 8 or 10 points.
If using single column, you can conserve space by laying out your images in
a row (i.e. a row of images across the page).
Items To Submit:
-
A file called prog1.html
with description and images of your project.
Include your name and login id near the top of the page.
Make sure your links are all local
and relative to your submit directory.
Call the submit directory prog1.
-
Include results (images) showing the requirements and
their combinations as described in the description section above.
Combinations might include scalar field with streamlines,
or no scalar field with arrow plot, etc.
One of these images should be named "thumb.gif" and will be used as
a thumbnail to index into your submission.
-
Include links to:
(i) source code,
(ii) user documentation,
(iii) technical writeup.
Again, note that all these should be local e.g. relative to your
submit directory.
Grading:
This program nominally accounts for 20% of your final grade.
Programs turned in at least a full day early will earn 1% bonus credit.
Late programs will not be accepted.
Bonus credits may be accumulated up to a
total of 50% toward program and final project credits.
This program is graded 70% for functionality and correctness,
30% for experimentation, readability, documentation/writeup.
Additional points may also be earned for extra features.
Submission:
Submission must be done using
the submit utility from CATS (e.g. unix.ic.ucsc.edu).
-
submit cmps161-ap.w19 prog1 prog1.tar, or
-
submit cmps161-ap.w19 prog1 prog1.zip,
Last modified
Sunday, 02-Jun-2019 10:38:30 PDT.