tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

DOMMatrix-invert-invertible.html (2397B)


      1 <!DOCTYPE html>
      2 <link rel="help" href="https://drafts.fxtf.org/geometry-1/#DOMMatrix">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="support/dommatrix-test-util.js"></script>
      6 <p>Test DOMMatrix.inverse()/invertSelf() for invertible matrices</p>
      7 <script>
      8 test(function() {
      9  var m = new DOMMatrix();
     10  assert_true(m.isIdentity);
     11  var m1 = m.inverse();
     12  assert_true(m1.isIdentity);
     13  checkMatrix(m, m1);
     14  m.invertSelf();
     15  checkMatrix(m, m1);
     16 }, "identity");
     17 
     18 test(function() {
     19  var m = new DOMMatrix().translate(10, -20.5);
     20  var m1 = m.inverse();
     21  checkMatrix(m1, new DOMMatrix().translate(-10, 20.5));
     22  // Check with 'new DOMMatrix()' instead of identity() because the latter is
     23  // a 3d identity matrix.
     24  checkMatrix(m1.multiply(m), new DOMMatrix());
     25  m.invertSelf();
     26  checkMatrix(m, m1);
     27 }, "translate");
     28 
     29 test(function() {
     30  var m = new DOMMatrix().translate(10, -20.5, 30.5);
     31  var m1 = m.inverse();
     32  checkMatrix(m1, new DOMMatrix().translate(-10, 20.5, -30.5));
     33  checkMatrix(m1.multiply(m), identity());
     34  m.invertSelf();
     35  checkMatrix(m, m1);
     36 }, "translate3d");
     37 
     38 test(function() {
     39  var m = new DOMMatrix().scale(4, -0.5);
     40  var m1 = m.inverse();
     41  checkMatrix(m1, new DOMMatrix().scale(0.25, -2.0));
     42  checkMatrix(m1.multiply(m), new DOMMatrix());
     43  m.invertSelf();
     44  checkMatrix(m, m1);
     45 }, "scale");
     46 
     47 test(function() {
     48  var m = new DOMMatrix().scale(4, -0.5, 2);
     49  var m1 = m.inverse();
     50  checkMatrix(m1, new DOMMatrix().scale(0.25, -2.0, 0.5));
     51  checkMatrix(m1.multiply(m), identity());
     52  m.invertSelf();
     53  checkMatrix(m, m1);
     54 }, "scale3d");
     55 
     56 test(function() {
     57  var m = new DOMMatrix().rotateAxisAngle(0, 0, 1, -30)
     58                         .scale(10, -0.5, 2.5)
     59                         .rotateAxisAngle(0, 1, 0, 10)
     60                         .translate(10, -20.5, 30.5)
     61                         .rotateAxisAngle(1, 0, 0, 20);
     62  var expected = new DOMMatrix().rotateAxisAngle(1, 0, 0, -20)
     63                                .translate(-10, 20.5, -30.5)
     64                                .rotateAxisAngle(0, 1, 0, -10)
     65                                .scale(0.1, -2.0, 0.4)
     66                                .rotateAxisAngle(0, 0, 1, 30);
     67  var m1 = m.inverse();
     68  var epsilon = 1e-6;
     69  checkMatrix(m1, expected, {epsilon});
     70  m.invertSelf();
     71  checkMatrix(m, expected, {epsilon});
     72 }, "complex");
     73 </script>