Planar Projection

From Math Images
Revision as of 12:06, 17 August 2009 by Tcheeseman1 (talk | contribs) (Orthographic Projection)
Jump to: navigation, search

Summary

Projection Parameters

Each of the parameters uses either the world-coordinate (WC) or viewing reference-coordinate (VRC) system. The WC system uses the standard x, y, and z axes, while the VRC system uses the u, v, and n axes.

  • The View Reference Point (VRP) is the point (WC) from which the camera is viewing the 3D geometry.
  • The View Plane Normal (VPN) is the normal (WC) which, once projected, defines the n axis.
  • The View Up Vector (VUP) is the vector (WC) that defines the orientation of the camera (i.e. which way is up) and, once projected, defines the v axis.
  • The Projection Reference Point (PRP) is the point (VRC) ...
  • The Viewing Window is the rectangle (VRC) that defines the size of the 2D window upon which the 3D geometry will be projected. It is defined by umin, umax, vmin, and vmax.
  • The projection type can be either parallel or perspective.

Parallel Projection

Summary

Orthographic Projection

The first step is to translate the VRP to the origin, which can be achieved by multiplying its complement with the following matrix T:

T = \left[ \begin{array}{cccc}
1 & 0 & 0 & -vrp_{x} \\
0 & 1 & 0 & -vrp_{y} \\
0 & 0 & 1 & -vrp_{z} \\
0 & 0 & 0 & 1
\end{array} \right]

The second step is to then rotate VPN to the z axis and VUP to the y axis. To do this we will calculate the following vectors:

  • R_{z} = \frac{VPN}{|VPN|}
  • R_{x} = \frac{VUP \times R_{z}}{|VUP \times R_{z}|}
  • R_{y} = R_{z} \times R_{x}

The components of these vectors (e.g. Rx = < rx1, rx2, rx3 >) then form the rotation matrix R:

R = \left[ \begin{array}{cccc}
r_{x_{1}} & r_{x_{2}} & r_{x_{3}} & 0 \\
r_{y_{1}} & r_{y_{2}} & r_{y_{3}} & 0 \\
r_{z_{1}} & r_{z_{2}} & r_{z_{3}} & 0 \\
0 & 0 & 0 & 1
\end{array} \right]

The third step is to shear the geometry so the the direction of projection (DOP) is parallel to the VPN (now aligned with the z axis). The DOP is defines as follows:

DOP = \left[ \begin{array}{c}
\frac{u_{max} + u_{min}}{2} - prp_{u} \\
\frac{v_{max} + v_{min}}{2} - prp_{v} \\
-prp_{n} \\
1
\end{array} \right]

To shear the DOP, we need to align it with the z axis.

TODO: define shx and shy

SH_{par} = \left[ \begin{array}{cccc}
1 & 0 & sh_{x} & 0 \\
0 & 1 & sh_{y} & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{array} \right]

TODO: add translate (Tpar) and scale (Spar)

The final transformation matrix for orthographic projection is then the result of the following multiplication:

N_{par} = (S_{par} \cdot (T_{par} \cdot (SH_{par} \cdot (R \cdot T \cdot (-VRP)))))

Oblique Projection

Perspective Projection

Summary