Cornell CS 465 Fall 2003

Solutions for Homework 2b (discussion questions)
------------------------------------------------

1. What is the normal to the sphere at each of the poles?  What is the normal
   that's computed by the method we recommend?

The normal at the north (y > 0) pole is [0 1 0]^T.
The normal at the south (y < 0) pole is [0 -1 0]^T.
Because the derivative with respect to u is zero at the poles, the normal
vector computed by the cross product of the derivatives is also zero.


2. If you implemented the helicoid, how does the magnitude of your normal
   compare between points near the axis and points near the edge?  Why is this?

The normal near the axis is smaller in magnitude than it is near the edge.
This is because the magnitudes of the derivatives are different.  The u
derivative is constant in magnitude (it always points away from the axis).
On the center axis the v derivative is small: the point just moves up the
axis as you adjust v.  On the outer edge the v derivative is large: the point
moves the same distance vertically but at the same time loops around the
helix.


3. If you implemented the rippled torus, do the u parameter lines twist
   along with the torus?  Why is this?  How could you have implemented it to
   make this answer come out the other way?

The answer depends on which way you implemented it, so I'll just discuss the
two ways here.

The basic form of the parameterization is 

  x =  cos phi (r_o + r_i cos theta)
  y =  r_i sin theta
  z = -sin phi (r_o + r_i cos theta)

The usual torus is achieved by phi = 2 pi u and theta = 2 pi v.
To achieve the ripples you make r_i depend on theta:

  r_i' = r_i (1 + a cos (n theta))
 
To achieve the twist you can make either r_i or theta depend on phi:

  r_i' = r_i (1 + a cos (n (theta - m phi)))

or

  theta' = theta + m phi

Either results in the same surface, but the former keeps the u parameter
lines running parallel to the tube, whereas the latter makes them follow the
twist and wrap around the tube.

The solution shows the two different approaches.  To see the first one, set
"Twisted Grid" to 0.0; to see the second one, set it to 1.0.