What are the uses of homogeneous coordinates? Convert translation rotation and scaling in homogeneous coordinates.
In mathematics homogeneous coordinates introduced by August Ferdinand Moby's in his 1827 work Deer barycentrische Calicle are a system of coordinates used in projective geometry much as Cartesian coordinates are used in Euclidean geometry. They have the advantage that coordinates of points including points at infinity can be represented using finite coordinates. Formulas involving homogeneous coordinates are often simpler and more symmetric than their Cartesian counterparts. Homogeneous coordinates have a range of applications including computer graphics and 3D computer vision where they allow affine transformations and in general projective transformations to be easily represented by a matrix. If the homogeneous coordinates of a point are multiplied by a non zero scalar then the resulting coordinates represent the same point. An additional condition must be added on the coordinates to ensure that only one set of coordinates corresponds to a given point, so the number of coordinates required is in general one more than the dimension of the projective space being considered. For example, two homogeneous coordinates are required to specify a point on the projective line and three homogeneous coordinates are required to specify a point on the projectile plane.
Basic Transformation Translation: A translation is applied to an object by repositioning it along a straight line path from one coordinate location t another. We translate a two dimensional point by adding translation distances f and t to the original coordinate position to move the point to a new position. The translation distance pair is called a translation vector of shift vector. We can express the translation equations as a single matrix equation by using column vectors to represent coordinate positions and the translation vector. This allows us to write the two dimensional translation equations in the matrix form: Since the column vector representation for a point is standard mathematical notation, and since many graphics packages, for example GKS and PHIGS, also use the column vector representation we will follow this convention. Translation is a rigid body transformation that moves objects without deformation. That is every point on the object is translated by the same amount. A straight line segment is translated by applying the transformation equation to each of the line endpoints and redrawing the line between the new endpoint positions. Polygons are translated by adding the translation vector to the coordinates and the current attribute settings. Fig. 1 illustrates the application of specified translation vector to move an object from one position to another. A two dimensional rotation is applied to an object by repositioning it along a circular path in the xy plane. To generate a rotation, we specify a rotation angle 0 and the position of the rotation point about which the object is to be rotated. Positive values for the rotation angle define counterclockwise rotations about the pivot point, as in Fig. 2 and negative values rotate objects in the clockwise direction. This transformation can also be described as a rotation about a rotation axis that is perpendicular to the xy plane and passes thorough the pivot point. We first determine the transformation equations for rotation of a point position P when the pivot point is at the coordinate origin. The angular and coordinate relationships of the original and transformed point positions are shown in fig. 3. In this figure, r is the constant distance of the point from the origin 4 is the original angular position of the point from the horizontal and t3 is the rotation angle. Using standard trigonometric identities we can express the transformed coordinate in terms of angle theta 0 as the original coordinates of the point in polar coordinates are. Substituting expressions 5 into 4 we obtain the rotation equations for rotating a point at position (x, y) through an angle theta about the origin: With the column vector representations eq. (1) for coordinate positions, we can write the rotation equations in the matrix form: When coordinate positions are represented as row vectors instead of column vectors the matrix product in rotation eq. 7, is transposed so that the transformed row coordinate vector is calculated as and the transpose R of matrix R is obtained by interchanging rows and columns. For a rotation matrix the transpose is obtained by simply changing the sign of the sine terms.
Scaling A scaling transformation alters the size of an object. This operation can be carried out for polygons by multiplying the coordinate values of each vertex by scaling factors s_{x}, and S _{x} to produce the transformed coordinates (x ',y' ): Scaling factor s scales objects in the x direction while s scales in the y direction. Any positive numeric values can be assigned to the scaling factors s and s. Valued less than 1 reduce the size of objects; values greater than 1 produce an enlargement. Specifying a value of 1 for both S and S leaves the size of objects unchanged. When S and S are assigned the same value a uniform scaling is produced that maintains relative object proportions. Unequal values for S and S result in a differential scaling that are often used in design applications, where pictures are constructed from a few basic shapes that can be adjusted by scaling and positioning transformations. Objects transformed with eq. 9 are both scaled and repositioned. Scaling factors with values less than 1 move objects closer to the coordinate origin, while values greater than 1 move coordinate positions farther from the origin.