我正在尝试使用' 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)));
我需要一个可以实现我的目标的数学方程式。角度= atan(俯仰/俯仰 - 滚动)不会绘制所需的角度。只有相同的俯仰和滚动才能保持正确并抛出90度(这意味着我正在向前倾斜传感器)。那么请你用一些数学表达式取代角度公式,这可以根据滚动和俯仰产生倾斜角度。
我附加了输出的屏幕截图。如果你发现我的问题含糊不清,那么请原谅并建议改进问题以便我得到答案。
答案 0 :(得分: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 );