WP7相机看到的角度是多少?

时间:2011-11-02 15:07:07

标签: c# windows-phone-7 camera

Determine angle of view of smartphone camera相同的问题,适用于WP7。 似乎找不到合适的方法,我不想让我的用户自己校准(如果可能的话)。 感谢

2 个答案:

答案 0 :(得分:3)

请看这篇文章

How to find out the aperture angle of an android camera

在WP7中,没有API函数可以获得它,除了

之外没有其他选项
  • 要求用户介绍(他们永远不知道)
  • 列出您支持的手机,并为每个手机获取/衡量。将其存储在您的应用中。 (疯狂!)

(我正在做同样的事情,我们在寻找自动校准方法上投入了大量资金,但没有成功。)

修改

欢呼并热爱bill和microsoft co。

答案 1 :(得分:2)

我不知道如何获得相机的角度,但我确实有一个应用程序可以根据偏航/滚动/俯仰来计算手机的倾斜度。

namespace PhoneUtilities.Utilities
{
    public class AccelerometerMath
    {
        public static double RadianToDegree(double radians)
        {

            return radians * (180 / Math.PI);
        }

        public static double Pitch(AccelerometerReading e)
        {
            return RadianToDegree((Math.Atan(e.Acceleration.X / Math.Sqrt(Math.Pow(e.Acceleration.Y, 2) + Math.Pow(e.Acceleration.Z, 2)))));
        }

        public static double Roll(AccelerometerReading e)
        {
            return RadianToDegree((Math.Atan(e.Acceleration.Y / Math.Sqrt(Math.Pow(e.Acceleration.X, 2) + Math.Pow(e.Acceleration.Z, 2)))));
        }

        public static double Yaw(AccelerometerReading e)
        {
            return RadianToDegree((Math.Atan(Math.Sqrt(Math.Pow(e.Acceleration.X, 2) + Math.Pow(e.Acceleration.Y, 2)) / e.Acceleration.Z)));
        }
    }
}

计算能够得到倾斜的角度,这是我用于某些三角形计算的例子Cos(角度)= adj / hyp:

private double CalcUpAdj(AccelerometerReading reading)
{
    double angle = PhoneUtilities.Utilities.AccelerometerMath.Yaw(reading);

    //Get the angleNeeded for calculation
    double angleNeeded = Math.Abs(angle);
    double adj = CalcAdj(angleNeeded);

    tbAngle.Text = String.Format("{0:0.00}", angleNeeded) + (char)176;
    textBlockAdj.Text = adj.ToString();

    return adj;
}

private double CalcAdj(double angleNeeded)
{
    double number;
    if (double.TryParse(tbHyp.Text, out number))
    {
        double hyp = number;
        double adj = Math.Cos(Math.PI * angleNeeded / 180) * hyp;

        tbAngle.Text = String.Format("{0:0.00}", angleNeeded) + (char)176;

        textBlockAdj.Text = adj.ToString();
        return adj;
    }

    return 0;
}

我不知道这是否会帮助您使用相机,但我想如果您知道屏幕的尺寸,您可以根据手机的倾斜度计算角度。希望你觉得这很有帮助。