void ValidateTranslation(const AffineTransform & t, double t_x, double t_y) { SquareMatrix m = t.GetMatrix(); ASSERT_NEAR(1, m[0][0], ABS_ERR); ASSERT_NEAR(0, m[0][1], ABS_ERR); ASSERT_NEAR(t_x, m[0][2], ABS_ERR); ASSERT_NEAR(0, m[1][0], ABS_ERR); ASSERT_NEAR(1, m[1][1], ABS_ERR); ASSERT_NEAR(t_y, m[1][2], ABS_ERR); ASSERT_NEAR(0, m[2][0], ABS_ERR); ASSERT_NEAR(0, m[2][1], ABS_ERR); ASSERT_NEAR(1, m[2][2], ABS_ERR); }
void ValidateScale(const AffineTransform & t, double scale_x, double scale_y) { SquareMatrix m = t.GetMatrix(); ASSERT_NEAR(scale_x, m[0][0], ABS_ERR); ASSERT_NEAR(0, m[0][1], ABS_ERR); ASSERT_NEAR(0, m[0][2], ABS_ERR); ASSERT_NEAR(0, m[1][0], ABS_ERR); ASSERT_NEAR(scale_y, m[1][1], ABS_ERR); ASSERT_NEAR(0, m[1][2], ABS_ERR); ASSERT_NEAR(0, m[2][0], ABS_ERR); ASSERT_NEAR(0, m[2][1], ABS_ERR); ASSERT_NEAR(1, m[2][2], ABS_ERR); }
void ValidateRotation(const AffineTransform & t, double theta) { SquareMatrix m = t.GetMatrix(); ASSERT_NEAR(cos(theta), m[0][0], ABS_ERR); ASSERT_NEAR(-sin(theta), m[0][1], ABS_ERR); ASSERT_NEAR(0, m[0][2], ABS_ERR); ASSERT_NEAR(sin(theta), m[1][0], ABS_ERR); ASSERT_NEAR(cos(theta), m[1][1], ABS_ERR); ASSERT_NEAR(0, m[1][2], ABS_ERR); ASSERT_NEAR(0, m[2][0], ABS_ERR); ASSERT_NEAR(0, m[2][1], ABS_ERR); ASSERT_NEAR(1, m[2][2], ABS_ERR); }
void ValidateIdentity(const AffineTransform & t) { SquareMatrix m = t.GetMatrix(); for (unsigned int row = 0; row < m.getRows(); row++) { for (unsigned int col = 0; col < m.getCols(); col++) { if (row == col) { ASSERT_NEAR(1, m[row][col], ABS_ERR); } else { ASSERT_NEAR(0, m[row][col], ABS_ERR); } } } }
void EqualTransforms(const AffineTransform & l, const AffineTransform & r) { EqualMatrices(l.GetMatrix(), r.GetMatrix()); }
void EqualToMatrix(const AffineTransform & t, const SquareMatrix & m) { EqualMatrices(t.GetMatrix(), m); }