40 return std::tie (a.mat00, a.mat01, a.mat02, a.mat10, a.mat11, a.mat12);
43 return tie (*
this) == tie (
other);
48 return ! operator== (
other);
57const AffineTransform AffineTransform::identity (1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
62 return {
other.mat00 * mat00 +
other.mat01 * mat10,
72 return { mat00, mat01, mat02 +
dx,
73 mat10, mat11, mat12 + dy };
78 return { 1.0f, 0.0f,
dx,
84 return { mat00, mat01,
tx,
132 return { factor * mat00, factor * mat01, factor * mat02,
133 factor * mat10, factor * mat11, factor * mat12 };
143 return { factor, 0, 0, 0, factor, 0 };
168 return { mat00 +
shearX * mat10,
178 return { 1.0f, 0.0f, 0.0f,
179 0.0f, -1.0f, height };
205 return exactlyEqual (mat00 * mat11 - mat10 * mat01, 0.0f);
210 float x01,
float y01)
noexcept
235 return (mat00 * mat11) - (mat01 * mat10);
238float AffineTransform::getScaleFactor()
const noexcept
240 return (std::abs (mat00) + std::abs (mat11)) / 2.0f;
255 void runTest()
override
257 beginTest (
"Determinant");
constexpr bool approximatelyEqual(Type a, Type b, Tolerance< Type > tolerance=Tolerance< Type >{} .withAbsolute(std::numeric_limits< Type >::min()) .withRelative(std::numeric_limits< Type >::epsilon()))
Returns true if the two floating-point numbers are approximately equal.
constexpr bool exactlyEqual(Type a, Type b)
Equivalent to operator==, but suppresses float-equality warnings.
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...
constexpr FloatType degreesToRadians(FloatType degrees) noexcept
Converts an angle in degrees to radians.