-
Indicate whether each of the following statements is true or false:
(1) |
_____ |
All projection matrices, , have the property
.
|
(2) |
_____ |
Insulating materials (like sand) are transparent.
|
(3) |
_____ |
A perfect diffuser appears shiny.
|
(4) |
_____ |
Gouraud shading an Phong shading differ in the
way they handle transparency.
|
(5) |
_____ |
In an orthographic projection the projectors are skew.
|
-
Choose the best answer to each of the following:
(1) |
_____ |
A 3D point in Homogeneous coordinates has how
many elements? |
|
|
- 2
- 3
- 4
- None of the above
|
(2) |
_____ |
A 3D rotation matrix in Cartesian coordinates has
how many elements? |
|
|
- 3
- 9
- 16
- None of the above
|
(3) |
_____ |
How many prinicpal faces are visible when using
an axonometric view? |
|
|
- 2
- 3
- 4
- None of the above
|
(4) |
_____ |
How many different foreshortening ratios are there
in an isometric view? |
|
|
- 2
- 3
- 4
- None of the above
|
(5) |
_____ |
When light falls on a surface it can be: |
|
|
- Absorbed
- Permuted
- Obtused
- None of the above
|
-
Answer each of the following:
-
Convert the point
from Homogeneous coordinates to Cartesian coordinates.
-
Convert the point
from Homogeneous coordinates to Cartesian coordinates.
-
Convert the point
from Cartesian coordinates to Homogeneous coordinates.
-
Project the 3D (Homogeneous) point
onto the plane using an orthographic projection.
Note: Do not translate or rotate the point before projectng.
-
Project the 3D (Homogeneous) point
onto the plane using a perspective projection
with a center of projection at .
Note: Do not translate or rotate the point before projectng.
-
Suppose, at a particular point, the light source vector
is given (in 3D Cartesian coordinates) by
and the
normal vector is given by
.
Compute the reflection vector for a perfectly reflective surface.
Show all of your work.
-
Suppose, at a particular point, the light source vector
is given (in 3D Cartesian coordinates) by
and the
viewer vector is given by
.
Compute the halfway vector.
Show all of your work.
-
Given a plane defined by the three Cartesian points
, , and
:
-
Find a vector that is perpendicular to this plane. Show all of
your work. Note: Your answer need not have a norm of 1.
-
Determine whether the
points and
lie on the same side of this plane.
Show all of your work.
-
Use the following shear matrix:
to transform the point:
-
In binary space partitioning, when all of the vertices of a
triangle are not on the same side of the place, we split the
triangle into three pieces. Explain why we split it into three
pieces and not two pieces.
-
Explain Lambert's Law and how it can be used to model
diffuse reflection.
-
Explain Mach bands.
-
Concatenate the following two 2D (Cartesian) transformation matrices,
assuming that the scaling, occurs before the
rotation, .
and
-
Answer both of the following:
-
How many multiplications and additions would be required to
scale and rotate 100 2D (Cartesian) points if the two
transforms were applied sequentially?
-
How many multiplications and additions would be required to
scale and rotate 100 2D (Cartesian) points using the concatenated
transform above?
-
Given the following 2D (Cartesian) points:
and the following add()
method (in pseudo-code):
add(Point p, Node n)
{
if (p isRightOf n.point)
{
if (n.right == null) n.right = new Node(p)
else add(p, n.right)
}
else
{
if (n.left == null) n.left = new Node(p)
else add(p, n.left)
}
}
draw the binary space partitioning tree that would be generated
by the following "main" method (in pseudo-code):
root = new Node(point[0])
for (i = 1...N-1)
{
add(point[i], root)
}
-
Using the following:
calculate the -value at each relevant pixel
on the scan line.
-
Given the following methods in the
Geometry3D
class:
public static double[][] getRotationAroundX(double phi)
public static double[][] getRotationAroundY(double theta)
complete the following trimetricView()
method. Your
answer must be consistent with the comments describing the method.
You may use methods that were required in the
VMath
and MMath
classes.
/**
* Transforms the given points so that they will
* be rendered using a trimetric view
*
* @param phi The rotation around the x axis
* @param theta The rotation around the y axis
* @param p The points
* @return The transformed points
*/
public static double[][] trimetricView(double phi, double theta,
double[][] p)
{
}
-
Write a method that is passed all of the necessary information and
returns the color that should be used for a pixel using
Gouraud shading. Note: Your method need not determine whether the
point should be filled (i.e., whether it is visible or not).