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
356TEST(MatrixTest, MinMaxScales2D) {
362 EXPECT_TRUE(pair.has_value())
363 <<
"Scales: " << scale1 <<
", " << scale2 <<
", " << matrix;
365 EXPECT_FLOAT_EQ(pair->first, scale1) << matrix;
366 EXPECT_FLOAT_EQ(pair->second, scale2) << matrix;
368 EXPECT_FLOAT_EQ(pair->first, scale2) << matrix;
369 EXPECT_FLOAT_EQ(pair->second, scale1) << matrix;
373 for (
int i = 1;
i < 10;
i++) {
375 for (
int j = 1; j < 10; j++) {
377 Scalar minScale = std::min(xScale, yScale);
378 Scalar maxScale = std::max(xScale, yScale);
385 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
386 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
387 check_pair(matrix, xScale, yScale);
395 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
396 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
397 check_pair(matrix, xScale, yScale);
403 {10.0f, 15.0f, 2.0f});
406 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
407 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
408 check_pair(matrix, xScale, yScale);
411 for (
int d = 45;
d < 360;
d += 45) {
418 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
419 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
420 check_pair(matrix, xScale, yScale);
429 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
430 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
431 check_pair(matrix, xScale, yScale);
459 EXPECT_FLOAT_EQ(matrix.
GetMinScale2D().value_or(-1.0f), minScale);
460 EXPECT_FLOAT_EQ(matrix.
GetMaxScale2D().value_or(-1.0f), maxScale);
461 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)