*Due in class Oct 4 2007*

- Assume that you have a model coordinate space with corners
(100,200) and (1100,2200). You wish to map points in it to a
window with corners (0,0) and (1,1). (600,1150) should map
to (0.5,0.5). X and Y should scale the same. Compute what
the transformations for X and Y should be, in this form:
X' = s X + dx

Y' = s Y + dy I.e., tell me what s, dx, and dy are. - Here are 2 points: (1,2) and (3,7). What is the vector from the first to the second point?
- Here are two parametric lines:
P = (4,0) +
*a*(1,0)

Q = (1,3) +*b*(0,2)*a*and*b*are parameters. Where do the 2 lines intersect? Give the point and the 2 parameters (*a*and*b*). - Here are 3 points on a plane: (0,0,0), (1,1,1), (5,3,2). Give a parametric equation for that plane.
- Compute a normal vector to that plane.
- Here is a plane equation: P = (2,2,3) +
*a*(0,1,0) +*b*(1,1,0).*a*and*b*are parameters. Here is a line equation: Q = (0,1,2)+*c*(0,1,1).*c*is a parameter. Where do the line and the plane intersect? Give the point and the 3 parameter values. - Here are 3 vertices of a 2-D triangle: A(1,0), B(2,1),
C(1,3). A parametric equation for points in the triangle ABC
is this: P =
*a*A +*b*B +*c*C.*a*,*b*, and*c*are parameters.*a+b+c=1. a>=0. b>=0. c>=0*. Find the values of*a,b,c*for these points:- A
- the midpoint of BC
- the centroid of ABC

- Curtis Priem is an RPI grad who founded NVIDIA and who is
now on RPI's Board of Trustees. He has been a generous
benefactor of RPI. He has about 200 patents worldwide.
- Check the subjects of Priem's US patents, and briefly comment on the distribution of patents by subject.
- Pick a graphics-related patent, and summarize it in 100 words or so. Use your words; don't just copy the patent.

- Write a simple interactive OpenGL program to demonstrate
affine transformations as follows.
- Draw some simple 3D object, perhaps one of the builtin glut ones, like a torus, using the default view.
- Transform the object slightly whenever the user types a
key, as follows:

With this many cases, I encourage you think of some efficient technique to reduce the number of lines of code you have to write and to make it easier to add or change cases.Key Operation **a**Translate left by .1 **b**Translate right by .1 **c**Translate down by .1 **d**Translate up by .1 **e**Translate nearer by .1 **f**Translate farther by .1 **g**Scale in x by 2/3 **h**Scale in x by 3/2 **i**Scale in y by 2/3 **j**Scale in y by 3/2 **k**Scale in z by 2/3 **l**Scale in z by 3/2 **m**Rotate around the x axis by 30 ^{o}**n**Rotate around the x axis by -30 ^{o}**o**Rotate around the y axis by 30 ^{o}**p**Rotate around the y axis by -30 ^{o}**q**Rotate around the z axis by 30 ^{o}**r**Rotate around the z axis by -30 ^{o} - Demonstrate your program in the lab on your laptop.