CS184 Homework 2
In this assignment, you will explore topics on geometric modeling covered in lecture. You will build Bezier curves and surfaces using de Casteljau algorithm, manipulate triangle meshes represented by half-edge data structure, and implement loop subdivision. For possible extra credit, you can optionally design your own polygon mesh using free modeling programs, such as Blender.
Logistics
Starter Code
Please accept the GitHub Classroom invitation to gain access to the starter code.
Deliverables
Your submission for this homework involves a checkpoint quiz, final code submission, and a final write-up. If you worked with a partner, remember to add your partner to all of your Gradescope submissions!
Deadlines
Task | Due |
---|---|
Checkpoint Quiz | Friday, February 21, 2025 |
Final Code Submission | Tuesday, March 4, 2025 |
Final Write-Up | Tuesday, March 4, 2025 |
All assignments are due at 11:59 PM. You have a total of 8 late days to use on assignments throughout the entire semester, but you do not have late days for checkpoint quizzes. Assignments which are turned in after 11:59PM will use one of your late days – there are no late minutes or late hours. Both your code and write-up need to be turned in for our submission to be complete.
Partners
You can optionally work with a partner on this homework. If you work with a partner, both of you should join the same team on Github Classroom. You should also produce 1 write-up and 1 gradescope submission with your partner added to the team for both the code and the write-up submission. As a reminder, homeworks consists of many moving parts that work together so it’s important that you both work together on all parts.
Checkpoint Quiz
There is a Gradescope Checkpoint quiz for this homework, due Friday, February 21, 2025. This short quiz is intended to help you get started on Homework 2. The content necessary for answering all questions can be found on the Homework 2 spec or in lecture material. If you are working with a partner, both partners must submit the quiz!
This checkpoint can be used to gain “buffer points” on the assignment. As long as you get at least 4 out of the 7 questions correct, AND submit a valid screenshot of your homework building, you’ll get the full 5 buffer points. No buffer points will be given if you did not meet these requirements. These 5 buffer points will be added to your HW 2 grade, capped at increasing your score to 100. For example, if you earned 96 points on the base homework and 2 points of extra credit, the 5 buffer points will bring your score up to 100, and the extra credit will bring your total score to 102.
Homework Parties
We will have 5 homework parties:
Date | Time | Location |
---|---|---|
Wed 2/26 | 5PM - 7PM | Soda 326 |
Fri 2/28 | 10AM - 12PM | Soda 310 |
Mon 3/3 | 11AM - 1PM | Cory 299 |
Mon 3/3 | 5PM - 7PM | Soda 380 |
Tue 3/4 | 5PM - 7PM | Berkeley Way West 1104 |
See the course calendar for more information.
Academic Honesty
Please do not post code to a public GitHub repository, even after the class is finished, since these assignments will be reused both here and at other universities in the future.
The homeworks are to be completed individually, unless you are working with a partner. You are welcome to discuss the various parts of the assignments with your classmates, but you must implement the algorithms yourself. You are free to share all code with your partner.
Friendly Advices From Your GSIs
- Start early. This assignment has multiple parts and you want to manage your time accordingly. Remember that pesky bugs can waste your time like no other; and always keep in mind Hofstadter’s Law.
- Part 1 and 2 should be relatively straightforward to implement once you understand Bezier curves and surfaces and de Casteljau algorithm.
- Part 3 to 6 will be more difficult to implement correctly right away since they involve managing pointers, which are exposed to you as iterators. Make sure you test these parts, especially Part 4 and 5, together on a few different meshes. While correct behaviors do not imply correct code, incorrect behaviors do imply incorrect code.
- The optional Section III for possible extra credit involves learning how to use Blender, which takes time even with video tutorials. We recommend starting early, in case you have questions. Learning Blender does not depend on any other part of this assignment, so you can do it anytime, perhaps as a nice break from chasing pointers, :).
- Make sure you allocate enough time to do a good job on the write-up!