【问题标题】:HTML5 orientation axes jumpHTML5 方向轴跳跃
【发布时间】:2017-05-01 04:52:18
【问题描述】:

我正在制作一个网络应用程序,我需要知道手机围绕深度轴的方向:如果手机像时钟表面的手臂一样旋转,手机会在哪里。 Beta 轴告诉我这一点。

但是,当我以纵向模式将手机面向我时,当我来回倾斜手机(Rolodex 上的顶部卡片倾斜的方式)时,所有值都会跳跃。看视频:

https://drive.google.com/file/d/0B5C3MHv2Hmc6VTI2RDlOSkJPVHc/view?usp=sharing

我在两部手机上都试过了,它们是一致的。我怎样才能在没有跳跃的情况下获得那个 beta 轴值?我确信有一种数学方法可以消除跳跃,但我不确定从哪里开始。

【问题讨论】:

    标签: javascript html orientation


    【解决方案1】:

    我正要放弃,我想,“哎呀,我从来没有遇到过 Unity 的那种问题。但是,当然,Unity 有四元数。”这个想法让我认为必须有一个用于 JavaScript 的四元数库,实际上是 there is

    这使我得到了这段代码:我只是将“向上”旋转到转换为四元数的手机方向并抓住 z 轴:

    let quaternion = new Quaternion();
    let radian = Math.PI / 180;
    
    $(window).on('deviceorientation', function(event) {
        event = event.originalEvent;
        quaternion.setFromEuler(
            event.alpha * radian,
            event.beta * radian,
            event.gamma * radian);
        let vector3 = quaternion.rotateVector([0, 1, 0]);
        let result = vector3[2];
    });
    

    这正是我需要的结果!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多