83TEST(MatrixTest, IsTranslationOnly) {
90 EXPECT_TRUE(
Matrix().IsTranslationOnly());
91 EXPECT_TRUE(
Matrix().IsTranslationScaleOnly());
94TEST(MatrixTest, IsTranslationScaleOnly) {
101 EXPECT_TRUE(
Matrix().IsTranslationOnly());
102 EXPECT_TRUE(
Matrix().IsTranslationScaleOnly());
105TEST(MatrixTest, IsInvertibleGetDeterminant) {
106 EXPECT_TRUE(
Matrix().IsInvertible());
107 EXPECT_NE(
Matrix().GetDeterminant(), 0.0f);
250TEST(MatrixTest, TransformHomogenous) {
253 2.0f, 3.0f, 5.0f, 7.0f,
254 11.0f, 13.0f, 17.0f, 19.0f,
255 23.0f, 29.0f, 31.0f, 37.0f,
256 41.0f, 43.0f, 47.0f, 53.0f
325TEST(MatrixTest, MinMaxScales2D) {
331 EXPECT_TRUE(pair.has_value())
332 <<
"Scales: " << scale1 <<
", " << scale2 <<
", " << matrix;
334 EXPECT_FLOAT_EQ(pair->first, scale1) << matrix;
335 EXPECT_FLOAT_EQ(pair->second, scale2) << matrix;
337 EXPECT_FLOAT_EQ(pair->first, scale2) << matrix;
338 EXPECT_FLOAT_EQ(pair->second, scale1) << matrix;
342 for (
int i = 1;
i < 10;
i++) {
344 for (
int j = 1; j < 10; j++) {
346 Scalar minScale = std::min(xScale, yScale);
347 Scalar maxScale = std::max(xScale, yScale);
354 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
355 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
356 check_pair(matrix, xScale, yScale);
364 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
365 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
366 check_pair(matrix, xScale, yScale);
372 {10.0f, 15.0f, 2.0f});
375 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
376 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
377 check_pair(matrix, xScale, yScale);
380 for (
int d = 45;
d < 360;
d += 45) {
387 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
388 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
389 check_pair(matrix, xScale, yScale);
398 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
399 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
400 check_pair(matrix, xScale, yScale);
428 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
429 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
430 check_pair(matrix, xScale, yScale);
static constexpr Matrix MakeColumn(Scalar m0, Scalar m1, Scalar m2, Scalar m3, Scalar m4, Scalar m5, Scalar m6, Scalar m7, Scalar m8, Scalar m9, Scalar m10, Scalar m11, Scalar m12, Scalar m13, Scalar m14, Scalar m15)
static constexpr Matrix MakeRow(Scalar m0, Scalar m1, Scalar m2, Scalar m3, Scalar m4, Scalar m5, Scalar m6, Scalar m7, Scalar m8, Scalar m9, Scalar m10, Scalar m11, Scalar m12, Scalar m13, Scalar m14, Scalar m15)