| <!DOCTYPE html> |
| <html><head> |
| <title>Geometry Interfaces: DOMPointReadOnly.matrixTransform</title> |
| <link href="mailto:simon.fraser@apple.com" rel="author" title="Simon Fraser"> |
| <link href="https://drafts.fxtf.org/geometry-1/#DOMPoint" rel="help"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <p>Test DOMPoint and DOMPointReadOnly interfaces</p> |
| <div id="log"></div> |
| <script> |
| function getMatrixTransform(matrix, point) { |
| var x = point.x * matrix.m11 + point.y * matrix.m21 + point.z * matrix.m31 + point.w * matrix.m41; |
| var y = point.x * matrix.m12 + point.y * matrix.m22 + point.z * matrix.m32 + point.w * matrix.m42; |
| var z = point.x * matrix.m13 + point.y * matrix.m23 + point.z * matrix.m33 + point.w * matrix.m43; |
| var w = point.x * matrix.m14 + point.y * matrix.m24 + point.z * matrix.m34 + point.w * matrix.m44; |
| return new DOMPoint(x, y, z, w) |
| } |
| test(function() { |
| var point = new DOMPoint(5, 4); |
| var matrix = new DOMMatrix(); |
| matrix.setMatrixValue('perspective(400px) translate3d(123px, 456px, 120px)'); |
| var result = point.matrixTransform(matrix); |
| var expected = getMatrixTransform(matrix, point); |
| checkDOMPoint(result, expected); |
| },'test DOMPoint matrixTransform with 3d matrix'); |
| |
| test(function() { |
| var point = DOMPointReadOnly.fromPoint({x:1, y:2, z:3, w:0.00234}); |
| var matrix = new DOMMatrix(); |
| matrix.setMatrixValue('perspective(400px) translate3d(123px, 456px, 120px)'); |
| var result = point.matrixTransform(matrix); |
| var expected = getMatrixTransform(matrix, point); |
| checkDOMPoint(result, expected); |
| },'test DOMPoint matrixTransform with perspective point'); |
| |
| function checkDOMPoint(p, exp) { |
| assert_equals(p.x, exp.x, "x is not matched"); |
| assert_equals(p.y, exp.y, "y is not matched"); |
| assert_equals(p.z, exp.z, "z is not matched"); |
| assert_equals(p.w, exp.w, "w is not matched"); |
| } |
| </script> |
| </body></html> |