132 Chapter 2 The Graphics System
{
Vector2 P; // P[2] = 0 and P[3] = 0 are set by the constructor
P[0] = row0.Dot(V);
P[1] = row1.Dot(V);
return P;
}
};
In this implementation, the classes use additional memory that is always zeroed out,
but takes advantage of hardware-assisted computations. The vectors are stored in
linear memory as
v0 v1 0 0
and the matrices are stored in linear memory as
m00 m01 0 0 m10 m11 0 0
In all three implementations, the outputs of a matrix-vector operation all represent
the same 2-tuple.
Generally, for 4-tuples and 4 × 4 matrices, the 16-byte alignment is achieved
without padding. Essentially, we have four possibilities for storing the matrices and
representing the vector-matrix product. The vector is either on the right or on