Problem Set 2
CMSC 427
Distributed
Thursday, February 24, 2005
Due: Thursday,
March 10, 2005
Programming
- Perlin
Noise: Implement an interactive version of the Perlin
noise function. You can see Ken Perlin’s talk at http://www.noisemachine.com/talk1/; for pseudo-code and more explanation check out http://freespace.virgin.net/hugo.elias/models/m_perlin.htm. Ken Perlin also provides some code at http://www.noisemachine.com. You
are free to use or adapt any of this code in completing the assignment.
Please reference any sources that you use.
You will write a program to
generate Perlin noise. The program will allow the user to tune the characteristics
of the noise, displaying the result, and saving it to a file when the user is
satisfied with its appearance. To start with, you will be given some skeleton
code, including code for reading and writing images to files using a format
called bmp. Executing the skeleton code will display a screen with
uniform gray “noise”. Typing ‘s’ will save this noise image to a file called
‘noise.bmp’.
- 20 points. Modify this program so that it
initially displays some Perlin noise instead of a uniformly gray image.
This can be Perlin noise generated at a single octave.
- 5 points. Now, modify your program so that you can
control the number of octaves used to generate the Perlin noise. Typing
'o' should increase the number of octaves used, and typing 'O' should
decrease the number of octaves.
- 5 points. Add a feature that allows you to control
the color of the noise, by typing ‘r’, ‘g’, ‘b’, ‘R’, ‘G’, ‘B’. For
example, typing ‘r’ should increase the amount of red in the noise, while
typing ‘R’ should decrease the amount of red.
- 5 points. Now add a feature so that typing ‘p’
allows you to zoom in on the texture, while typing ‘P’ zooms you out.
- 5 points. Finally, add a toggle so that typing 1
either turns off or turns on turbulence. This is done by using the absolute
values of the intensity, instead of the raw intensity.
- Challenge problem: Add more features to your
Perlin noise generator, and experiment with other mappings from noise to
color. Ideas can be found on Ken Perlin’s web pages, on the instructions
to Problem Set 1 of Amitabh Varshney’s class last semester, and on the
web. Derek has also implemented an interesting method you can look at by
typing ‘2’ on his demo system. Try to generate the most realistic
possible grass to map onto your ground plane (see problem 2), or the most
creative textures to map onto your buildings. Document how you achieved
your results. Prizes will be given for the best results.
- Texture Mapping:
- 12 points. Modify the 3D program from problem set
1 to texture map images onto the rectanguloids. You may use Perlin noise
that you have generated, and/or you may use your own images.
- 12 points. Also, create a ground plane and
texture it with a grass-like Perlin noise texture generated using code
from Problem 1. Position the retanguloids so that they appear to rest on
the plane. Note that you can still do this problem using Derek’s code
even if you do not complete problem 1.
Pencil and Paper Exercises
(9 points each. For problems with three parts, each part is 3 points.)
- Suppose we have two triangles of equal area in the z=0
plane. We rotate them about the y axis and project them orthographically
back into the z=0 plane.
- Prove that the projection of the two triangles still have
equal area.
- What is the relationship between the area of the
triangles before and after they are projected, as a function of the angle
of rotation?
- Show that if we project the two triangles using
perspective projection they do not necessarily have the same area after
projection.
- Suppose we have a perspective camera, with a focal point
at the origin, and an image plane at the z=1 plane. We are looking at
lines on the floor, which is the y = -5 plane. Give equations that describe
the set of lines that have a vanishing point at (3,0,1).
- Consider a point that at time t=0 is at the
position (6,1,2). The point travels in the z direction at a speed of one
unit of distance per unit of time. For example, at time t=1, the
point is at (6,1,3). Suppose this point is being imaged using the
perspective camera in problem 2. Write an equation that gives the x
coordinate of the image of the point as a function of time.
- Suppose that a fan has five identical, equally spaced
blades. The fan is rotating at a speed of 10 revolutions per second.
- Suppose at time 0 a blade has an angle of 0 relative to
the x axis. If we take another picture 1/30th of a
second later how far will this blade have moved?
- What will be the angle to the blade that is nearest to
the x axis.
- How quickly do we have to take photographs to avoid
aliasing?
- Challenge Problem: Suppose we have a
one-dimensional sine wave, y = sin(kx). Suppose we average this function,
so that the y value of every point is replaced by the average of all
points within a distance of p/8 of
that point in the x direction. What will be the function that
results from this averaging? Explain how this shows that averaging helps
remove high-frequency changes in an image.