Homogeneous Coordinates
 | History
 | Invented in 1827 independently by both Møbius and Karl Wilhelm
Feuerbach |
 | Developed more completely in 1946 by EA Maxwell |
 | Novel because provides insight to allow geometry to be computed
algebraically |
 | Allows all graphics transforms to be handled uniformly
|
|
 | Short summary (from OpenGL
Programming Guide by M. Woo
et al, Addison Wesley, 1999)
OpenGL works in the homogeneous coordinates of three-dimensional
projective geometry, so for internal calculations, all vertices are
represented with four floating-point coordinates (x, y,
z, w). If w is different from zero, these
coordinates correspond to the Euclidean three-dimensional point (x/w,
y/w, z/w). You can specify the w
coordinate in OpenGL commands, but that's rarely done. If the w
coordinate isn't specified, it's understood to be 1.0.
|
 | Motivation (from A
Unified Algebraic Framework for Classical Geometry by D Hestenes et
al, Springer 1999)
The standard algebraic model for Euclidean space En is an
n-dimensional real vector space Rn or, equivalently, a set of
real coordinates. One trouble with this model is that, algebraically, the
origin is a distinguished element, whereas all the points of En
are identical. This deficiency in the vector space model was corrected early
in the 19th century by removing the origin from the plane and placing it one
dimension higher. Formally, that was done by introducing homogeneous
coordinates. The vector space model also lacks adequate representation for
Euclidean points or lines at infinity. We solve both problems here with a
new model for En employing the tools of geometric algebra. We
call it the homogeneous model of En.
|
 | Relationship between points and vectors in homogeneous coordinates
As long as w is nonzero, the homogeneous vertex (x, y, z,
w)T corresponds to the three-dimensional point (x/w,
y/w, z/w)T. If w = 0.0, it corresponds to no Euclidean
point, but rather to some idealized "point at infinity." To
understand this point at infinity, consider the point (1, 2, 0, 0), and note
that the sequence of points (1, 2, 0, 1), (1, 2, 0, 0.01), and (1, 2.0, 0.0,
0.0001), corresponds to the Euclidean points (1, 2), (100, 200), and (10000,
20000). This sequence represents points rapidly moving toward infinity along
the line 2x = y. Thus, you can think of (1, 2, 0, 0)
as the point at infinity in the direction of that line. |
If we homogenize the point (divide by W), we get a point of the form (x, y,
1). Thus, the homogenized points form a plane defined by the equation W = 1 in
(x, y, W)-space.

Rotations
References
|