2019-08-10 16:32发布
正点原子 发表于 2013-3-7 23:20 看代码都不看注释的,这年头是不是很流行啊? //得到角度 //x,y,z:x,y,z方向的重力加速度分量(不需要单位, ...
最多设置5个标签!
原子哥你好我画了个图与Z轴的夹角 计算temp=sqrt((x*x+y*y))/z;
能理解,那为什么与X的和与Y的都变倒数了,我觉得与X的夹角应该是temp=sqrt((z*z+y*y))/x;
//得到角度
//x,y,z:x,y,z方向的重力加速度分量(不需要单位,直接数值即可)
//dir:要获得的角度.0,与Z轴的角度;1,与X轴的角度;2,与Y轴的角度.
//返回值:角度值.单位0.1°.
short ADXL345_Get_Angle(float x,float y,float z,u8 dir)
{
float temp;
float res=0;
switch(dir)
{
case 0://与自然Z轴的角度
temp=sqrt((x*x+y*y))/z;
res=atan(temp);
break;
case 1://与自然X轴的角度
temp=x/sqrt((y*y+z*z));
res=atan(temp);
break;
case 2://与自然Y轴的角度
temp=y/sqrt((x*x+z*z));
res=atan(temp);
break;
}
return res*1800/3.14;
}
注意单位!!!
---------------------------------
为什么要以0.1°作为单位呢?用1°作为单位不是更加直观么?是截断误差和精度方面的考虑么?
---------------------------------
当然有影响了,速度就是受加速度影响啊...
一周热门 更多>