diff options
Diffstat (limited to 'components/script/dom/xrreferencespace.rs')
-rw-r--r-- | components/script/dom/xrreferencespace.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/components/script/dom/xrreferencespace.rs b/components/script/dom/xrreferencespace.rs index 804768eee69..664dc4f0e23 100644 --- a/components/script/dom/xrreferencespace.rs +++ b/components/script/dom/xrreferencespace.rs @@ -56,12 +56,18 @@ impl XRReferenceSpaceMethods for XRReferenceSpace { impl XRReferenceSpace { /// Gets pose of the viewer with respect to this space /// - /// This is equivalent to `get_pose(self).inverse() * get_pose(viewerSpace)`, however - /// we specialize it to be efficient + /// This is equivalent to `get_pose(self).inverse() * get_pose(viewerSpace)` (in column vector notation), + /// however we specialize it to be efficient pub fn get_viewer_pose(&self, base_pose: &WebVRFrameData) -> RigidTransform3D<f64> { let pose = self.get_unoffset_viewer_pose(base_pose); // This may change, see https://github.com/immersive-web/webxr/issues/567 + + // in column-vector notation, + // get_viewer_pose(space) = get_pose(space).inverse() * get_pose(viewer_space) + // = (get_unoffset_pose(space) * offset).inverse() * get_pose(viewer_space) + // = offset.inverse() * get_unoffset_pose(space).inverse() * get_pose(viewer_space) + // = offset.inverse() * get_unoffset_viewer_pose(space) let offset = self.transform.get().transform(); let inverse = offset.inverse(); inverse.pre_mul(&pose) |