1a. {(4,5) or (5,5)} -> (5,5) -> {(5,7), or (6,7)} They should choose one in the either-or cases. There are 3 points in total. 1b. Take the gradient of the parabola equation in implicit form, the vector is k(x, -2), where k is any real number. They were asked for a unit vector, so it has to be normalized. So k = 1/|(x,-2)| (or any unit vector in that direction). 1c. Segments must be defined whenever the slope cross |1|. The "slope" of the parabola = x/2. From (0, 0) to (2, 1) slope < 1, segment one. From (2,1) to (4,4) slope >= 1 to end of parabola, segment two. From (4,4) to (6,8), the straight line, segment three. It's ok to combine segments two and three. 1d. If x = 1, the value of y on the parabola = 1/4. Hence, (1, 1/2) lies above the parabola. In Bresenham's algorithm, suppose (0,0) was the pixel drawn last, (1,1/2) is the midpoint we check to determine whether pixel (1,0) (E) or pixel (1,1) (NE) should be drawn next. In this case, pixel (1,0). 2. Transformation Matrix: Rot(pi/6) * Translate(8*cos(pi*(i-1)/6),5*sin(pi*(i-1)/6)) * Scale(2,2) Common mistakes: -globally scale by 8,5 which distorts the beads -matrices in wrong order -translation matrices must be [1 0 tx; 0 1 ty; 0 0 1] not [0 0 tx; 0 0 ty; 0 0 0] 3a. Due to perspective foreshortening, image size is found by dividing object size by distance all multiplied by image plane distance. Easy to show by similar triangles that the image size for object A (size a, distance d) and object B (size 3a, distance 3d) are the same for any image plane: /| / | / | / | 3a /|a | /_|___| d 3d Note: need diagram & explanation 3b. Not always true. Parallel lines that are perpendicular to the viewing direction v will not converge, so if l dot v = 0 the lines will not converge. 4a. No, after the perspective divide, the z-value has a discontinuity at 0. (i.e, z' = n + f - fn/z) The depth order are not preserved for points behind the eye point (with negative z-values before the divide). See page 261-262 of the textbook, points with negative z values gets mapped to beyond n+f, which creates complications in clipping. In the textbook example, the triangle becomes flipped geometrically, so clipping naively would result in clipping against a different triangle than you originally had. 4b. No, any example (concave objects or just 2 front faces occluding each other) would do. 4c. Yes, in the worst case, an object space algorithm could create n^2 number of new primitives due to ambiguity at construction time, which results in more primitives to draw during run time (i.e., BSP tree). But BSP trees are not on the midterm, they could just say in the worst case, every object must be compared against O(n) other objects when drawing. 4c. No, any obvious example would do.