1

我对移动设备的AR应用很感兴趣,自然想更好地利用指南针。

我一直在努力解决的唯一问题不是指南针的抖动程度。(角度平滑似乎很好地解决了这个问题)我的主要问题是当设备保持垂直时,指南针值开始吓坏了。导致屏幕上的指南针在整个地方翻转。我在移动应用程序开发方面没有很多经验,所以我不确定是什么导致了这个问题,是 Unity 问题还是只是数字罗盘的限制。我知道其他应用程序似乎可以在任何方向使用指南针,但这对我来说都是愚蠢的新事物。

我确实尝试过以 8 的数字移动手机。我必须使用的设备是 Nexus 4。

using UnityEngine;
using System.Collections;

public class Compass : MonoBehaviour {

// Use this for initialization
void Start () {
    Input.location.Start ();
    Input.compass.enabled = true;
}

// Update is called once per frame
void Update ()
{
    var heading = Input.compass.trueHeading;
    transform.eulerAngles = new Vector3 (0, 0, heading);
}
}
4

1 回答 1

1

序言:)

首先,我不是我将要讨论的主题的专家(不幸的是)。但是,我还是决定分享我的想法。

理论

该问题可以通过以下方式概括。您希望有一些连续函数,它采用 3D 向量(在您的情况下是设备方向)并返回与原始向量正交的另一个向量。理论说(参见毛球定理)对于某些参数,该函数将返回零向量。如果这样的功能是指南针,则当设备垂直定向时返回零向量(如果您曾经使用过普通指南针,这很自然)。

实践

  1. 有时,您希望您的应用程序知道手机后置摄像头(后置摄像头)指向世界的哪一边。
  2. 或者甚至你想要组合方法:

    • 如果手机是平放的,请显示手机的顶部指向什么。
    • 如果手机是垂直的,请显示手机的背面指向什么。

在这两种情况下,除了指南针之外,您还需要使用陀螺仪。

于 2014-05-09T04:06:17.100 回答