Assignment 2

Assignment 2 is now available! You can view the document here. This assignment will be due at 11:00 pm on Feb 4th. The submission guidelines are identical to the previous assignment. Electronic submissions are preferred (cc’ing both kmcrane@cs.cmu.edu and nsharp@cs.cmu.edu), but if you wish to submit a physical document, do so in class or at 215 Smith Hall. Smith Hall locks to the public at 5:00 pm, so plan accordingly.

The document linked above has several questions inline, numbered as Exercises 12-17. You DO NOT need to complete problems 13 and 16; they involve material we have not yet covered. Also, there are some sections of text that might not recognize yet, such as a discussion of the Laplace-Beltrami operator and some use of exterior calculus. Don’t worry about these for now — they are not necessary to solve the problems, and we will be covering them in class in the upcoming weeks.

At the end of the document there is a coding assignment asking you to implement several of the quantities defined in the preceding text. A corresponding code skeleton is now present in the course repository, which you should download and modify. Note that the core library has also been updated, so you will need to re-download (or git pull, if you’re using git) the entire repository. The skeleton in Assignment2.py contains empty methods in which you will implement your solution, all of your modifications must be between the lines which say BEGIN YOUR CODE and END YOUR CODE. To submit the coding portion, email us your modified copy of the file Assignment2.py along with your written submission. There are some additional questions at the conclusion of the coding section, include your responses in the written submission.

To keep things simple, we will only be considering meshes without boundary for this assignment. There is a collection of such meshes in the Assignment2/Boundaryless_Meshes/ directory on which to test your code.

To investigate your code, run it as we did with the test assignment. Pressing ‘h’ will print (to your terminal) a list of commands supported by the program. Clicking on the mesh will print useful information about faces/edges/vertices.

Finally, on Tuesday (1/26) in class, I will be leading a workshop with a quick introduction to computing with meshes and a guide to using the course library. It is highly recommended that you attend! Please refrain from asking me any questions about the codebase until after that workshop.

9 thoughts on “Assignment 2”

  1. One minor correction to the homework PDF: In the diagram directly above Exercise 17, for the object on the left, the normals should be facing in the opposite direction.

    Thanks to the person who pointed this out!

  2. I have installed the modules from Assignment 0, but cannot import the euclid module in the Assignment2.py file. I am running python 3.4. Are some of the modules only compatible with 2.7? (I noticed 2.7 is the version listed under the github documentation, but I just wanted to make sure we need to use that version before re-installing.)

    1. Unfortunately Python 2.7 and 3.4 are significantly different; this code was developed for 2.7 so it probably won’t work on 3.4 without some significant effort. Installing 2.7 sounds like a good idea, let me know if you have any trouble.

  3. One little trick: The result of acos(np.dot((a/norm(a)),(b/norm(b)))) and acos(np.dot(a,b)/(norm(a)*norm(b))) may be different in python, which may lead to different results when calculating the angle defect. The former one is correct! Thanks to @Khryl’s help:).

  4. This is pretty late, but shouldn’t the sign on Exercise 15 be flipped?

    Right now, if you position a regular tetrahedron with $p_i$ on ‘top’, then all the cotans are going to be positives, but all the $p_j-p_i$’s are pointing ‘down’, which would give the gradient pointing ‘down’, but it seems like the way to increase the area the fastest is to move $p_i$ ‘up’

Leave a Reply