0

我正在尝试使用“C”根据俯仰和滚动值设计图形。为此,我有一个倾斜传感器(加速度计),它会吐出滚动和俯仰值。我想使用应该能够向我显示倾斜传感器倾斜方向的图形。

下面是我的程序中的一些代码,用于确定角度(基于俯仰和滚动值)。

szBuff[] 具有 R:SXXX.XX P:SXXX.XX\r\n 格式的数据

其中 S = 符号,R = 滚动,P = 俯仰。

    if (szBuff[2] == '+' && szBuff[12] == '-')
    {
       -------------------------------------    
       if(pitch>roll){                             
        Angle = atan(pitch / pitch- roll);             // Insert formula here 
       -------------------------------------
      }
    }  

在这里,俯仰和滚动是没有迹象的。

我画了一条根据俯仰和横滚值偏转的线。使用上述算法,我计算了它必须偏转的角度。

 line((left+150),(top+150),((left+150)+150*cos(Angle)),((top+150)+150*sin(Angle)));

我需要一个可以实现我的目标的数学方程。Angle = atan(pitch / pitch -roll) 未绘制所需的角度。仅对于相同的俯仰和滚动,它才成立并抛出 90 度(这意味着我正在向前倾斜传感器)。那么你能否用一些数学表达式替换角度公式,它可以根据滚动和俯仰生成倾斜角度。

我附上了输出的屏幕截图。如果您发现我的问题模棱两可,请原谅并建议改进问题,以便我得到回答。在此处输入图像描述

4

1 回答 1

0

通常,俯仰和滚动是角度。我假设滚动是围绕垂直轴旋转的角度,俯仰是围绕水平轴旋转的角度。

然后您可以将 3d 位置计算为:

x = sin(roll) * cos(pitch)
y = sin(pitch)
z = cos(roll) * cos(pitch)

两者都roll应该pitch包含它们的标志。

您似乎想将此向量投影到固定平面上,可能是 xz 平面。然后你会使用:

line( left+150,
      top+150,
      left+150+150*x,
      top+150+150*z );
于 2014-08-06T07:43:17.100 回答