/* order.                                                              */
vec3 operator* (const vec3& v, const mat3& m)
{
	/* Multiply column one by the vector to get the new x component */
	float x = m.getColumn(0) * v;
	/* Multiply column two by the vector to get the new y component */
	float y = m.getColumn(1) * v;
	/* Multiply column three by the vector to get the new z component */
	float z = m.getColumn(2) * v;

	/* Return a new vector with the new components */
	return vec3(x, y, z);
}
Esempio n. 2
0
// matrix multiplication (m1 * m2)
mat3
operator* (const mat3& m1, const mat3& m2)
{
	mat3 mult;
	mult[0][0] = m1[0] * m2.getColumn(0);
	mult[0][1] = m1[0] * m2.getColumn(1);
	mult[0][2] = m1[0] * m2.getColumn(2);

	mult[1][0] = m1[1] * m2.getColumn(0);
	mult[1][1] = m1[1] * m2.getColumn(1);
	mult[1][2] = m1[1] * m2.getColumn(2);

	mult[2][0] = m1[2] * m2.getColumn(0);
	mult[2][1] = m1[2] * m2.getColumn(1);
	mult[2][2] = m1[2] * m2.getColumn(2);

	return mult;
}
/* Multiply the given two 3x3 matrices and return the new matrix. */
mat3 operator* (const mat3& m1, const mat3& m2)
{
	/* Multiply first row by the columns of m2 */
	vec3 row1 = vec3(m1[0] * m2.getColumn(0), 
					 m1[0] * m2.getColumn(1), 
					 m1[0] * m2.getColumn(2));
	/* Multiply second row by the columns of m2 */
	vec3 row2 = vec3(m1[1] * m2.getColumn(0),
					 m1[1] * m2.getColumn(1),
					 m1[1] * m2.getColumn(2));
	/* Multiply third row by the columns of m2 */
	vec3 row3 = vec3(m1[2] * m2.getColumn(0),
					 m1[2] * m2.getColumn(1),
					 m1[2] * m2.getColumn(2));

	/* Return a new matrix of the new vectors */
	return mat3(row1,
				row2,
				row3);
}