tor-browser

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

xrRigidTransform_inverse.https.html (3704B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="resources/webxr_util.js"></script>
      5 <script src="resources/webxr_math_utils.js"></script>
      6 <script src="resources/webxr_test_constants.js"></script>
      7 <script src="resources/webxr_test_asserts.js"></script>
      8 <script>
      9 
     10 let testName = "XRRigidTransform inverse works";
     11 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     12 
     13 let testFunction =
     14  (session, fakeDeviceController, t) => new Promise((resolve, reject) => {
     15 
     16  // An identity transform should be equal to it's inverse.
     17  let identity_transform = new XRRigidTransform();
     18  t.step(() => {
     19    assert_transform_approx_equals(identity_transform, identity_transform.inverse);
     20  });
     21 
     22  // Inversed transforms should yield the expected results
     23  let transform = new XRRigidTransform(
     24      { x: 1.0, y: 2.0, z: 3.0 },
     25      { x: 0.0, y: 0.0, z: 0.0, w: 1.0 });
     26  let inverse_transform = transform.inverse;
     27  let expected_inverse = new XRRigidTransform(
     28      { x: -1.0, y: -2.0, z: -3.0 },
     29      { x: 0.0, y: 0.0, z: 0.0, w: 1.0 });
     30  t.step(() => {
     31    assert_transform_approx_equals(inverse_transform, expected_inverse);
     32  });
     33 
     34  transform = new XRRigidTransform(
     35      { x: 0.0, y: 0.0, z: 0.0 },
     36      { x: 1.0, y: 0.0, z: 0.0, w: 1.0 });
     37  inverse_transform = transform.inverse;
     38  expected_inverse = new XRRigidTransform(
     39      { x: 0.0, y: 0.0, z: 0.0 },
     40      { x: -1.0, y: 0.0, z: 0.0, w: 1.0 });
     41  t.step(() => {
     42    assert_transform_approx_equals(inverse_transform, expected_inverse);
     43  });
     44 
     45  transform = new XRRigidTransform(
     46      { x: 1.0, y: 2.0, z: 3.0 },
     47      { x: 0.0, y: 1.0, z: 0.0, w: 1.0 });
     48  inverse_transform = transform.inverse;
     49  expected_inverse = new XRRigidTransform(
     50      { x: 3.0, y: -2.0, z: -1.0 },
     51      { x: 0.0, y: -1.0, z: 0.0, w: 1.0 });
     52  t.step(() => {
     53    assert_transform_approx_equals(inverse_transform, expected_inverse);
     54  });
     55 
     56  // Transforms should be equal to the inverse of their inverse.
     57  transform = new XRRigidTransform(
     58      { x: 1.0, y: 2.0, z: 3.0 },
     59      { x: 1.0, y: 2.0, z: 3.0, w: 4.0 });
     60  inverse_transform = transform.inverse;
     61  t.step(() => {
     62    assert_transform_approx_equals(transform, inverse_transform.inverse);
     63  });
     64 
     65  transform = new XRRigidTransform(
     66      { x: -9.0, y: 8.0, z: -7.0 },
     67      { x: 6.0, y: -5.0, z: 4.0, w: 3.0 });
     68  inverse_transform = transform.inverse;
     69  t.step(() => {
     70    assert_transform_approx_equals(transform, inverse_transform.inverse);
     71  });
     72 
     73  transform = new XRRigidTransform(
     74      { x: -2.0, y: 1.0, z: -4.0 },
     75      { x: 0.0, y: 1.0, z: 0.0, w: 1.0 });
     76  inverse_transform = transform.inverse;
     77  t.step(() => {
     78    assert_transform_approx_equals(transform, inverse_transform.inverse);
     79  });
     80 
     81  transform = new XRRigidTransform(
     82      { x: 2.0, y: -1.0, z: 4.0 },
     83      { x: 1.0, y: 0.0, z: 0.0, w: 1.0 });
     84  inverse_transform = transform.inverse;
     85  t.step(() => {
     86    assert_transform_approx_equals(transform, inverse_transform.inverse);
     87  });
     88 
     89  // Inverse should always return the same object, and calling inverse on that
     90  // object should return the original object.
     91  transform = new XRRigidTransform(
     92      { x: 1.0, y: -2.0, z: 3.0 },
     93      { x: 0.0, y: 0.0, z: 1.0, w: 1.0 });
     94  inverse_transform = transform.inverse;
     95  t.step(() => {
     96    assert_equals(transform.inverse, inverse_transform);
     97    assert_equals(inverse_transform.inverse, transform);
     98    assert_equals(transform.inverse.inverse, transform);
     99    assert_equals(transform.inverse.inverse.inverse, inverse_transform);
    100  });
    101 
    102  resolve();
    103 });
    104 
    105 xr_session_promise_test(testName, testFunction, fakeDeviceInitParams,
    106    'immersive-vr');
    107 
    108 </script>