CIS881
Labs


The lab specifications are tentative at this point and will be finalized as the quarter progresses. The 'tentative' label will be changed to 'finalized' when the lab has been finalized. The due date will either be posted here or on the class newsgroup; in any case it will be announced in class.

This quarter, the labs will be demoed to the grader, not electronically submitted. I will make a sign-up sheet available for lab grading.

Some skeleton code will be provided which can be modified to do the labs. You will not be given sample labs; you are expected to design and implement your own lab.

You will have to demo your lab to the grader in order to have it evaluated.

Labs count for 30% of the final grade.

Contents:


Lab 1
Basic Data Generation
5%; Due April 19 for demoing
Finalized

Write a program that can generate basic geometric models. Your program should provide reasonable user interaction. Implement the following techniques:
solids of revolution
The user should draw an open or closed curve. The curve is drawn relative to an axis in the display image; you can use either a default axis or a user-specified one). The user should be able to set the number of slices. Optional extension: check for overlap of contour and axis of revolution and issue a warning to the user.
extrusion
The user should draw one open or closed wire and be able to set the z-depth of the extrusion. the wire should be considered to lie in the x-y plane and the extrusion to occur in the z direction. Optional extension: you can generalize this to include a user-specified extrusion direction. Optional extension: you can generate multiple extruded wires.
sweep operators
User input of an open or closed generator wire and an open or closed trajectory wire. Consider the generator wire to lie in the x-y plane. Consider the trajectory wire to lie in the y-z plane.
output ASCII vertex-face file
Use counterclockwise face definitions and use the following format:
k2
    #-of-vertices=n #-of-faces=m
    x1 y1 z1
    x2 y2 z2
    ...
    xn yn zn
    #-of-vertices-in-first-face=k1 v11 v12 ... v1k1
    #-of-vertices-in-second-face=k2 v21 v22 ... v2k2
    ....
    #-of-vertices-in-mth-face=km vm1 vm2 ... vmkm
For example, a cube looks like:
    8 6
    -1  1  1
     1  1  1
     1 -1  1
    -1 -1  1
    -1  1 -1
     1  1 -1
     1 -1 -1
    -1 -1 -1
    4 3 2 1 0
    4 4 5 6 7
    4 5 4 0 1
    4 6 5 1 2
    4 7 6 2 3
    4 4 7 3 0
Extra Credit:

Lab2
Basic Curve Technology
5%; Be ready to demo May 10
Almost Finalized