Graphics Programs Reference

In-Depth Information

Projection transformation allows control of the projection of cube world of
NDCS

(
Figure 3-17
) onto the (rectangular) 2D space of the display screen. This helps re-

move the skewing of rendered graphics (since we limit the viewing volume, graphics

no longer stretch when the orientation changes). Additionally, the final coordinate

system becomes
right handed
(that is, point
(0, 0, 1)
in this coordinate system

is closer to the viewer than point
(0, 0, -1)
).

The Matrix Class

Most graphic rendering APIs do not provide built-in functions for transformations.

However, frameworks hosting such APIs do provide utility methods for the same.

Once again, Android comes to the rescue, providing useful methods for transform-

ations using the
android.opengl.Matrix
class (not to be confused with the

android.graphics.Matrix
class). The following is a list of matrix math util-

ities from this class to help easily perform the transformations discussed so far:

Geometric/Modeling transformation

▪
Matrix .translateM(float[ ] m, int mOffset, float x, float y, float z):

Translates matrix
m
by
x
,
y,
and
z
along x-axis, y-axis, and z-ax-

is, respectively (please note that, for all methods we use from the

Matrix
class, we set the
mOffset
argument as '0,' which

means “no-offset”)

▪
Matrix .rotateM(float[ ] m, int mOffset, float a, float x, float y,

float z):
Rotates matrix
m
by angle
a
(in degrees) about the speci-

fied axes

▪
Matrix .scaleM(float[ ] m, int mOffset, float x, float y, float z):

Scales matrix
m
by
x
,
y,
and
z
along x-axis, y-axis, and z-axis,

respectively

Coordinate/Viewing transformation

▪
Matrix .setLookAtM(float[ ] m, int mOffset, float eyeX, float eyeY,

float eyeZ, float centerX, float centerY, float centerZ, float upX,

float upY, float upZ):
Defines a
view matrix
m
in terms of an eye

point (that is, viewer's position), a center of view, and an up vec-

tor.

Search WWH ::

Custom Search