CSCI 441 - Computer Graphics

Fall 2017 - Assignment 4 - Sell Out



Canvas | CS @ Mines | Mines | Piazza

|   Home |  Syllabus |  Assignments |  Leaderboard |  Schedule |  Resources   |
This assignment is due by Friday, September 29, 2017 by 11:59pm.

Construction has now begun on your ride. You are pleased with the work thus far and begin to wonder when you need to complete the ride by. How soon until the park reopens? Maybe this is a question you should have asked sooner. No sooner does the thought leave your head that the woman who took your picture come running back up to.
Fabulous! I was hoping I'd find you hear. We are getting ready to open the park and must begin publicizing the grand reopening. We need a new mascot. Our Intern here is all set to do the dance and bring people in to the park. We're going to leave it up to you what our new mascot should be. Please make use of our costume rack again and outfit the Intern. Once your set, please run through the park again. Our mascot will follow you where ever you go. This will surely get people talking! They'll be lined up to get in.


Part I - Follow the Mouse


You look at the Intern and roll your eyes.

Is this really what this kid signed up for? To dance in a monkey suit when nobody's in the park?

You pick out some clothes for the Intern to wear and ask the Intern if they really want to do this.
Oh yes, absolutely! Here is the job posting I replied to when they were looking for applicants.
You take the newspaper clipping and begin reading:
For this assignment, you will use your Assignment 3 submission as the starting point and add to it. Following the same format as Lab03, you will read in control points from a file. With your submission, you must include a control point file that specifies the Bézier curves for your submission. We will later test with an additional control point file for completeness and accuracy. All curves you submit will be C0 continuous by definition, but can it be C1 continuous as well?

As before, your program must feature a grid and scenery of some sort to provide the user with a sense of scale and perspective. Your hero will still be moving around the world as before. Now, there will be a Bézier curve(s) centered around your hero. You must plot the "control cage," the edges between control points, with a light yellow line, and plot the Bézier curve itself with a blue line. You must also draw small, solid green spheres at the control points. As your hero moves around the world, the curve should move with the hero so the hero is always at the center of where the curve is drawn around.

Finally, animate a mascot. that continuously moves along the curve. When the mascot reaches the end of the curve, have it jump to the beginning of the curve and repeat indefinitely (unless the end of your curve is the beginning of your curve, what happens then?). Your mascot should be drawn hierarchically and animated while it moves just as your hero does. Therefore, even if your hero is standing still, your pet should still be in constant motion along the curve.

The camera can follow any camera model (freecam or arcball cam) you like.

Lastly, have keys that perform the following operations:
  1. "Display/Hide Control Cage" which toggles if the control points and cage are visible or not.
  2. "Display/Hide Bézier Curve" which toggles if the actual curve is visible or not.
  3. A "Quit" option which closes the program.
Be sure to put in your README.txt which keys perform each operation.

You will be using Bézier curves as part of your midterm project, so it's a good idea to write your functions as generally as possible (e.g., have a function that takes 4 controls points and an interpolant as input and returns the corresponding point on the curve, and a similar function for the entire curve).
Ready to go, the Intern starts dancing around you. Better make Ra happy and start wandering again.


Part II - Website


Update the webpage that you submitted with A3 to include an entry for this assignment. As usual, include a screenshot (or two) and a brief description of the program, intended to showcase what your program does to people who are not familiar with the assignment.


Documentation


With this and all future assignments, you are expeced to appropriately document your code. This includes writing comments in your source code - remember that your comments should explain what a piece of code is supposed to do and why; don't just re-write what the code says in plain English. Comments serve the dual purpose of explaining your code to someone unfamiliar with it and assisting in debugging. If you know what a piece of code is supposed to be doing, you can figure out where it's going awry more easily.

Proper documentation also means including a README.txt file with your submission. In your submission folder, always include a file called README.txt that lists:
  • Your Name / email
  • Assignment Number / Project Title
  • A brief, high level description of what the program is / does
  • A usage section, explaining how to run the program, which keys perform which actions, etc.
  • Instructions on compiling your code
  • Notes about bugs, implementation details, etc. if necessary
  • How long did this assignment take you?
  • How much did the lab help you for this assignment? 1-10 (1 - did not help at all, 10 - this was exactly the same as the lab)
  • How fun was this assignment? 1-10 (1 - discontinue this assignment, 10 - I wish I had more time to make it even better)


Grading Rubric


Your submission will be graded according to the following rubric.

PercentageRequirement Description
5%Control points are read in from file correctly. (Your program will be tested against two new control point files that we provide)
10%Bézier curve is evaluated correctly.
10%Bézier curve is drawn correctly.
5%Control points of the Bézier curve are drawn correctly.
5%Control cage is drawn correctly.
15%Mascot is drawn hierarchically and is animated while moving.
15%Animated mascot moves correctly along curve, jumps back to start at the end of the curve, and repeats this process indefinitely.
5%Mascot moves along the curve smoothly.
15%Bézier curve is centered around hero. As the hero moves throughout the world, the curve moves with the hero and continues to revolve around the hero.
5%Camera follows arcball cam or freecam model. Left mouse button controls view. If using arcball cam, Ctrl + Left mouse button controls zoom.
5%Control Cage and Control Points can be toggled to show or hide.
5%Submission includes source code, Makefile, and README.txt.
Source code is well documented. Webpage named <heroName>.html submitted and updated with screenshot from latest assignment. Submission compiles and executes in the lab machine environment.


Experience Gained & Available Achievements


Assignment Attribute
Assignments +100 XP
Web Attribute
Web +100 XP
Mobius Strip
Mobius Strip

*NOTE: Since this assignment builds off exactly where Assignment 3 left off, the hidden achievements from Assignment 3 will also apply to this assignment. The Extra Credit Achievement from A3 cannot be earned from this assignment (A4). If you already earned the hidden achievements from A3, you cannot earn them a second time from A4.


Submission


Please update your Makefile so it produces an executable with the name a4. When you are completed with the assignment, zip together your source code, Makefile, README.txt, and www/ folder. Name the zip file, HeroName_A4.zip. Upload this file to Canvas under A4.


This assignment is due by Friday, September 29, 2017 by 11:59pm.
Last Updated: 09/18/17 11:47


Valid HTML 4.01 Strict Valid CSS! Level Triple-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0