OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkMatrix44.h" | 8 #include "SkMatrix44.h" |
9 #include "Test.h" | 9 #include "Test.h" |
10 | 10 |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 scale.setScale(2, 4, 8); | 361 scale.setScale(2, 4, 8); |
362 scale.invert(&inverse); | 362 scale.invert(&inverse); |
363 inverse.asRowMajord(inverseData); | 363 inverse.asRowMajord(inverseData); |
364 assert16<double>(reporter, inverseData, | 364 assert16<double>(reporter, inverseData, |
365 0.5, 0, 0, 0, | 365 0.5, 0, 0, 0, |
366 0, 0.25, 0, 0, | 366 0, 0.25, 0, 0, |
367 0, 0, 0.125, 0, | 367 0, 0, 0.125, 0, |
368 0, 0, 0, 1); | 368 0, 0, 0, 1); |
369 | 369 |
370 SkMatrix44 scaleTranslation(SkMatrix44::kUninitialized_Constructor); | 370 SkMatrix44 scaleTranslation(SkMatrix44::kUninitialized_Constructor); |
371 scaleTranslation.setScale(10, 100, 1000); | 371 scaleTranslation.setScale(32, 128, 1024); |
372 scaleTranslation.preTranslate(2, 3, 4); | 372 scaleTranslation.preTranslate(2, 3, 4); |
373 scaleTranslation.invert(&inverse); | 373 scaleTranslation.invert(&inverse); |
374 inverse.asRowMajord(inverseData); | 374 inverse.asRowMajord(inverseData); |
375 assert16<double>(reporter, inverseData, | 375 assert16<double>(reporter, inverseData, |
376 0.1, 0, 0, -2, | 376 0.03125, 0, 0, -2, |
377 0, 0.01, 0, -3, | 377 0, 0.0078125, 0, -3, |
378 0, 0, 0.001, -4, | 378 0, 0, 0.0009765625, -4, |
379 0, 0, 0, 1); | 379 0, 0, 0, 1); |
380 | 380 |
381 SkMatrix44 rotation(SkMatrix44::kUninitialized_Constructor); | 381 SkMatrix44 rotation(SkMatrix44::kUninitialized_Constructor); |
382 rotation.setRotateDegreesAbout(0, 0, 1, 90); | 382 rotation.setRotateDegreesAbout(0, 0, 1, 90); |
383 rotation.invert(&inverse); | 383 rotation.invert(&inverse); |
384 SkMatrix44 expected(SkMatrix44::kUninitialized_Constructor); | 384 SkMatrix44 expected(SkMatrix44::kUninitialized_Constructor); |
385 double expectedInverseRotation[16] = | 385 double expectedInverseRotation[16] = |
386 {0, 1, 0, 0, | 386 {0, 1, 0, 0, |
387 -1, 0, 0, 0, | 387 -1, 0, 0, 0, |
388 0, 0, 1, 0, | 388 0, 0, 1, 0, |
389 0, 0, 0, 1}; | 389 0, 0, 0, 1}; |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 rot.setRotateDegreesAbout(0, 0, -1, 90); | 824 rot.setRotateDegreesAbout(0, 0, -1, 90); |
825 mat.postConcat(rot); | 825 mat.postConcat(rot); |
826 mat.postTranslate(v,v,v); | 826 mat.postTranslate(v,v,v); |
827 REPORTER_ASSERT(reporter, mat.invert(NULL)); | 827 REPORTER_ASSERT(reporter, mat.invert(NULL)); |
828 mat.invert(&inverse); | 828 mat.invert(&inverse); |
829 iden1.setConcat(mat, inverse); | 829 iden1.setConcat(mat, inverse); |
830 REPORTER_ASSERT(reporter, is_identity(iden1)); | 830 REPORTER_ASSERT(reporter, is_identity(iden1)); |
831 | 831 |
832 // test mixed-valued matrix inverse | 832 // test mixed-valued matrix inverse |
833 mat.reset(); | 833 mat.reset(); |
834 mat.setScale(SkDoubleToMScalar(1.0e-10), | 834 mat.setScale(SkDoubleToMScalar(1.0e-2), |
835 SkDoubleToMScalar(3.0), | 835 SkDoubleToMScalar(3.0), |
836 SkDoubleToMScalar(1.0e+10)); | 836 SkDoubleToMScalar(1.0e+2)); |
837 rot.setRotateDegreesAbout(0, 0, -1, 90); | 837 rot.setRotateDegreesAbout(0, 0, -1, 90); |
838 mat.postConcat(rot); | 838 mat.postConcat(rot); |
839 mat.postTranslate(SkDoubleToMScalar(1.0e+10), | 839 mat.postTranslate(SkDoubleToMScalar(1.0e+2), |
840 SkDoubleToMScalar(3.0), | 840 SkDoubleToMScalar(3.0), |
841 SkDoubleToMScalar(1.0e-10)); | 841 SkDoubleToMScalar(1.0e-2)); |
842 REPORTER_ASSERT(reporter, mat.invert(NULL)); | 842 REPORTER_ASSERT(reporter, mat.invert(NULL)); |
843 mat.invert(&inverse); | 843 mat.invert(&inverse); |
844 iden1.setConcat(mat, inverse); | 844 iden1.setConcat(mat, inverse); |
845 REPORTER_ASSERT(reporter, is_identity(iden1)); | 845 REPORTER_ASSERT(reporter, is_identity(iden1)); |
846 | 846 |
847 // test degenerate matrix | 847 // test degenerate matrix |
848 mat.reset(); | 848 mat.reset(); |
849 mat.set3x3(1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0); | 849 mat.set3x3(1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0); |
850 REPORTER_ASSERT(reporter, !mat.invert(NULL)); | 850 REPORTER_ASSERT(reporter, !mat.invert(NULL)); |
851 | 851 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 test_get_set_double(reporter); | 892 test_get_set_double(reporter); |
893 test_set_row_col_major(reporter); | 893 test_set_row_col_major(reporter); |
894 test_translate(reporter); | 894 test_translate(reporter); |
895 test_scale(reporter); | 895 test_scale(reporter); |
896 test_map2(reporter); | 896 test_map2(reporter); |
897 test_3x3_conversion(reporter); | 897 test_3x3_conversion(reporter); |
898 test_has_perspective(reporter); | 898 test_has_perspective(reporter); |
899 test_preserves_2d_axis_alignment(reporter); | 899 test_preserves_2d_axis_alignment(reporter); |
900 test_toint(reporter); | 900 test_toint(reporter); |
901 } | 901 } |
OLD | NEW |