与Determine angle of view of smartphone camera相同的问题,适用于WP7。 似乎找不到合适的方法,我不想让我的用户自己校准(如果可能的话)。 感谢
答案 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;
}
我不知道这是否会帮助您使用相机,但我想如果您知道屏幕的尺寸,您可以根据手机的倾斜度计算角度。希望你觉得这很有帮助。