Add some math verifying relationship between get_viewer_pose and get_pose

This commit is contained in:
Manish Goregaokar 2019-04-05 18:42:57 -07:00
parent 91378cc859
commit ea3609b42e
2 changed files with 28 additions and 6 deletions

View file

@ -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)