Node: Transform Operators, Next: Matrix Inversion, Previous: Transform Constructors, Up: Transform Reference
Transform operator= (const Transform& t) | Assignment operator |
Sets *this to t and returns t. Returning *this would, of course, have exactly the same effect. |
real operator*= (real r) | Operator |
Multiplication with assignment by a scalar.
This operator multiplies each element
E
of matrix by
the scalar r.
The return value is r . This makes it possible to
chain invocations of this function:
For a_x, b_x, c_x, ..., p_x in R
,
x in N
Transform T0(a_0, b_0, c_0, d_0, e_0, f_0, g_0, h_0, i_0, j_0, k_0 l_0, m_0, n_0, o_0, p_0); Transform T1(a_1, b_1, c_1, d_1, e_1, f_1, g_1, h_1, i_1, j_1, k_1 l_1, m_1, n_1, o_1, p_1); Transform T2(a_2, b_2, c_2, d_2, e_2, f_2, g_2, h_2, i_2, j_2, k_2 l_2, m_2, n_2, o_2, p_2); real r = 5; Let M_0, M_1, and M_2 stand for
M_0 = a_0 b_0 c_0 d_0 e_0 f_0 g_0 h_0 i_0 j_0 k_0 l_0 m_0 m_0 o_0 p_0 M_1 = a_1 b_1 c_1 d_1 e_1 f_1 g_1 h_1 i_1 j_1 k_1 l_1 m_1 m_1 o_1 p_1 M_2 = a_2 b_2 c_2 d_2 e_2 f_2 g_2 h_2 i_2 j_2 k_2 l_2 m_2 m_2 o_2 p_2 T0 *= T1 *= T2 *= r; Now, M_0 = 5a_0 5b_0 5c_0 5d_0 5e_0 5f_0 5g_0 5h_0 5i_0 5j_0 5k_0 5l_0 5m_0 5m_0 5o_0 5p_0 M_1 = 5a_1 5b_1 5c_1 5d_1 5e_1 5f_1 5g_1 5h_1 5i_1 5j_1 5k_1 5l_1 5m_1 5m_1 5o_1 5p_1 M_2 = 5a_2 5b_2 5c_2 5d_2 5e_2 5f_2 5g_2 5h_2 5i_2 5j_2 5k_2 5l_2 5m_2 5m_2 5o_2 5p_2 This function is not currently used anywhere, but it may turn out to be useful for something. |
Transform operator* (const real r) | const operator |
Multiplication of a Transform by a scalar without assignment.
The return value is a Transform
A.
If this.matrix has elements
E_T, then A.matrix has elements E_A such that
E_A = r * E_T
for all E. |
Transform operator*= (const Transform& t) | Operator |
Performs matrix multiplication on matrix and
t.matrix . The result is assigned to matrix .
t is returned, not *this ! This makes it possible to
chain invocations of this function:
Transform a; a.shift(1, 1, 1); Transform b; b.rotate(0, 90); Transform c; c.shear(5, 4); Transform d; d.scale(3, 4, 5); Let a_m, b_m, and c_m stand for
a_m = 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 b_m = 0.5 0.5 0.707 0 0.146 0.854 -0.5 0 -0.854 0.146 0.5 0 0 0 0 1 c_m = 1 12 14 0 10 1 15 0 11 13 1 0 0 0 0 1 d_m = 3 0 0 0 0 4 0 0 0 0 5 0 0 0 0 1 a *= b *= c *= d; a , b , and c are transformed by d , which
remains unchanged.
Now, a_m = 3 0 0 0 0 4 0 0 0 0 5 0 3 4 5 1 b_m = 1.5 2 3.54 0 -0.439 3.41 -2.5 0 -2.56 0.586 2.5 0 0 0 0 1 c_m = 3 48 70 0 30 4 75 0 33 52 5 0 0 0 0 1d_m is unchanged. |
Transform operator* (const Transform t) | const operator |
Multiplication of a Transform by another Transform without
assignment.
The return value is a Transform whose matrix contains
values that are the result of the matrix multiplication of
matrix and t.matrix .
|