Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/geometry-interfaces-dom-matrix-rotate.html

Issue 2444733002: [GeometryInterface] Add rotate*(), rotateFromVector*() function. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE HTML> 1 <!DOCTYPE HTML>
2 <script src="../../resources/testharness.js"></script> 2 <script src="../../resources/testharness.js"></script>
3 <script src="../../resources/testharnessreport.js"></script> 3 <script src="../../resources/testharnessreport.js"></script>
4 <script src="./resources/geometry-interfaces-test-helpers.js"></script> 4 <script src="./resources/geometry-interfaces-test-helpers.js"></script>
5 <script> 5 <script>
6 6
7 function deg2rad(degrees) { 7 function deg2rad(degrees) {
8 return degrees * Math.PI / 180; 8 return degrees * Math.PI / 180;
9 } 9 }
10 10
11 function rad2deg(radians) {
12 return radians * 180 / Math.PI;
13 }
14
11 function getRotationMatrix(x, y, z, alpha_in_degrees) { 15 function getRotationMatrix(x, y, z, alpha_in_degrees) {
12 // Vector normalizing 16 // Vector normalizing
13 var nx = x; 17 var nx = x;
14 var ny = y; 18 var ny = y;
15 var nz = z; 19 var nz = z;
16 var length = Math.sqrt(x * x + y * y + z * z); 20 var length = Math.sqrt(x * x + y * y + z * z);
17 if (length) { 21 if (length) {
18 nx = x / length; 22 nx = x / length;
19 ny = y / length; 23 ny = y / length;
20 nz = z / length; 24 nz = z / length;
(...skipping 19 matching lines...) Expand all
40 var m34 = 0; 44 var m34 = 0;
41 var m41 = 0; 45 var m41 = 0;
42 var m42 = 0; 46 var m42 = 0;
43 var m43 = 0; 47 var m43 = 0;
44 var m44 = 1; 48 var m44 = 1;
45 49
46 return new DOMMatrix([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m 34, m41, m42, m43, m44]); 50 return new DOMMatrix([m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m 34, m41, m42, m43, m44]);
47 } 51 }
48 52
49 test(() => { 53 test(() => {
54 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
55 var result = matrix.rotate(60);
56 matrix.rotateSelf(60);
57 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
58 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 1, 60));
59 assert_matrix_almost_equals(result, expectedMatrix);
60 assert_matrix_almost_equals(matrix, expectedMatrix);
meade_UTC10 2016/10/24 05:37:11 I had to think for a moment to figure out what the
Hwanseung Lee 2016/10/24 14:33:43 Done.
61 }, "DOMMatrix 2d - rotate(rotX) and rotateSelf(rotX)");
62
63 test(() => {
64 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
65 var result = matrix.rotate(77);
66 matrix.rotateSelf(77);
67 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
68 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 1, 77));
69 assert_matrix_almost_equals(result, expectedMatrix);
70 assert_matrix_almost_equals(matrix, expectedMatrix);
71 }, "DOMMatrix 3d - rotate(rotX) and rotateSelf(rotX)");
72
73 test(() => {
74 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
75 var result = matrix.rotate(10, 20);
76 matrix.rotateSelf(10, 20);
77 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
78 expectedMatrix.multiplySelf(getRotationMatrix(0, 1, 0, 20));
79 expectedMatrix.multiplySelf(getRotationMatrix(1, 0, 0, 10));
80 assert_matrix_almost_equals(result, expectedMatrix);
81 assert_matrix_almost_equals(matrix, expectedMatrix);
82 }, "DOMMatrix 2d - rotate(rotX, rotY) and rotateSelf(rotX, rotY)");
83
84 test(() => {
85 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
86 var result = matrix.rotate(23, 50);
87 matrix.rotateSelf(23, 50);
88 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
89 expectedMatrix.multiplySelf(getRotationMatrix(0, 1, 0, 50));
90 expectedMatrix.multiplySelf(getRotationMatrix(1, 0, 0, 23));
91 assert_matrix_almost_equals(result, expectedMatrix);
92 assert_matrix_almost_equals(matrix, expectedMatrix);
93 }, "DOMMatrix 3d - rotate(rotX, rotY) and rotateSelf(rotX, rotY)");
94
95 test(() => {
96 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
97 var result = matrix.rotate(39, 10, 50);
98 matrix.rotateSelf(39, 10, 50);
99 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
100 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 1, 50));
101 expectedMatrix.multiplySelf(getRotationMatrix(0, 1, 0, 10));
102 expectedMatrix.multiplySelf(getRotationMatrix(1, 0, 0, 39));
103 assert_matrix_almost_equals(result, expectedMatrix);
104 assert_matrix_almost_equals(matrix, expectedMatrix);
105 }, "DOMMatrix 2d - rotate(rotX, rotY, rotX) and rotateSelf(rotX, rotY, rotX)");
106
107 test(() => {
108 var matrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
109 var result = matrix.rotate(55, 66, 88);
110 matrix.rotateSelf(55, 66, 88);
111 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
112 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 1, 88));
113 expectedMatrix.multiplySelf(getRotationMatrix(0, 1, 0, 66));
114 expectedMatrix.multiplySelf(getRotationMatrix(1, 0, 0, 55));
115 assert_matrix_almost_equals(result, expectedMatrix);
116 assert_matrix_almost_equals(matrix, expectedMatrix);
117 }, "DOMMatrix 3d - rotate(rotX, rotY, rotX) and rotateSelf(rotX, rotY, rotX)");
118
119 test(function() {
120 var matrix2d = new DOMMatrix([1, 2, 3, 4, 5, 6]);
121 var result = matrix2d.rotateFromVector(4, 7);
122 var expected = new DOMMatrix([1, 2, 3, 4, 5, 6]);
123 expected.rotateSelf(rad2deg(Math.atan2(7, 4)));
124 assert_matrix_almost_equals(result, expected);
125 matrix2d.rotateFromVectorSelf(4, 7);
126 assert_matrix_almost_equals(matrix2d, expected);
127 }, "DOMMatrix 2d - rotateFromVector(x, y) and rotateFromVectorSelf(x, y)");
128
129 test(function() {
130 var matrix3d = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1 5, 16]);
131 var result = matrix3d.rotateFromVector(4, 7);
132 var expected = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1 5, 16]);
133 expected.rotateSelf(rad2deg(Math.atan2(7, 4)));
134 assert_matrix_almost_equals(result, expected);
135 matrix3d.rotateFromVectorSelf(4, 7);
136 assert_matrix_almost_equals(matrix3d, expected);
137 }, "DOMMatrix 3d - rotateFromVector(x, y) rotateFromVectorSelf(x, y)");
138
139 test(() => {
50 var matrix2d = new DOMMatrix([1, 2, 3, 4, 5, 6]); 140 var matrix2d = new DOMMatrix([1, 2, 3, 4, 5, 6]);
51 matrix2d.rotateAxisAngleSelf(); 141 matrix2d.rotateAxisAngleSelf();
52 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6]); 142 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6]);
53 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 0, 0)); 143 expectedMatrix.multiplySelf(getRotationMatrix(0, 0, 0, 0));
54 assert_true(matrix2d.is2D); 144 assert_true(matrix2d.is2D);
55 assert_matrix_almost_equals(matrix2d, expectedMatrix); 145 assert_matrix_almost_equals(matrix2d, expectedMatrix);
56 }, "DOMMatrix 2d - rotateAxisAngleSelf()"); 146 }, "DOMMatrix 2d - rotateAxisAngleSelf()");
57 147
58 test(() => { 148 test(() => {
59 var matrix2d = new DOMMatrix([1, 2, 3, 4, 5, 6]); 149 var matrix2d = new DOMMatrix([1, 2, 3, 4, 5, 6]);
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 matrix3d = matrix3d.rotateAxisAngle(1, 1, 1, -180); 424 matrix3d = matrix3d.rotateAxisAngle(1, 1, 1, -180);
335 matrix3d = matrix3d.rotateAxisAngle(1, 1, 1, +180); 425 matrix3d = matrix3d.rotateAxisAngle(1, 1, 1, +180);
336 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]); 426 var expectedMatrix = new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
337 assert_matrix_almost_equals(matrix3d, expectedMatrix); 427 assert_matrix_almost_equals(matrix3d, expectedMatrix);
338 }, "DOMMatrix 3d - rotateAxisAngle() - do rotate -180,+180"); 428 }, "DOMMatrix 3d - rotateAxisAngle() - do rotate -180,+180");
339 429
340 test(() => { 430 test(() => {
341 var matrix3d = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) ; 431 var matrix3d = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) ;
342 matrix3d = matrix3d.rotateAxisAngle(0, 0, 1, -90); 432 matrix3d = matrix3d.rotateAxisAngle(0, 0, 1, -90);
343 var expectedMatrix1 = new DOMMatrix([0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0]); 433 var expectedMatrix1 = new DOMMatrix([0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0]);
344 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix1.toFloat6 4Array()); 434 assert_matrix_almost_equals(matrix3d, expectedMatrix1);
345 matrix3d = matrix3d.rotateAxisAngle(1, 0, 0, -90); 435 matrix3d = matrix3d.rotateAxisAngle(1, 0, 0, -90);
346 var expectedMatrix2 = new DOMMatrix([0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0]); 436 var expectedMatrix2 = new DOMMatrix([0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0]);
347 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix2.toFloat6 4Array()); 437 assert_matrix_almost_equals(matrix3d, expectedMatrix2);
348 matrix3d = matrix3d.rotateAxisAngle(0, 1, 0, -90); 438 matrix3d = matrix3d.rotateAxisAngle(0, 1, 0, -90);
349 var expectedMatrix3 = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); 439 var expectedMatrix3 = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
350 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix3.toFloat6 4Array()); 440 assert_matrix_almost_equals(matrix3d, expectedMatrix3);
351 }, "DOMMatrix 3d - rotateAxisAngle()"); 441 }, "DOMMatrix 3d - rotateAxisAngle()");
352 442
353 test(() => { 443 test(() => {
354 var matrix3d = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) ; 444 var matrix3d = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) ;
355 matrix3d.rotateAxisAngleSelf(0, 0, 1, -90); 445 matrix3d.rotateAxisAngleSelf(0, 0, 1, -90);
356 var expectedMatrix1 = new DOMMatrix([0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0]); 446 var expectedMatrix1 = new DOMMatrix([0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0]);
357 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix1.toFloat6 4Array()); 447 assert_matrix_almost_equals(matrix3d, expectedMatrix1);
358 matrix3d.rotateAxisAngleSelf(1, 0, 0, -90); 448 matrix3d.rotateAxisAngleSelf(1, 0, 0, -90);
359 var expectedMatrix2 = new DOMMatrix([0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0]); 449 var expectedMatrix2 = new DOMMatrix([0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0]);
360 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix2.toFloat6 4Array()); 450 assert_matrix_almost_equals(matrix3d, expectedMatrix2);
361 matrix3d.rotateAxisAngleSelf(0, 1, 0, -90); 451 matrix3d.rotateAxisAngleSelf(0, 1, 0, -90);
362 var expectedMatrix3 = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); 452 var expectedMatrix3 = new DOMMatrix([1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
363 assert_array_almost_equals(matrix3d.toFloat64Array(), expectedMatrix3.toFloat6 4Array()); 453 assert_matrix_almost_equals(matrix3d, expectedMatrix3);
364 }, "DOMMatrix 3d - rotateAxisAngleSelf()"); 454 }, "DOMMatrix 3d - rotateAxisAngleSelf()");
365 455
366 </script> 456 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698