0

「C」を使用して、ピッチとロールの値に基づいてグラフィックをデザインしようとしています。そのために、ロールとピッチの値を吐き出す傾斜センサー(加速度計)があります。傾斜センサーを傾ける方向を表示できるグラフィックを利用したいと考えています。

以下は、角度を決定する私のプログラムのコードです(ピッチとロールの値に基づいて)。

R:SXXX.XX P:SXXX.XX\r\n形式のデータを持つszBuff[]

ここで、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度回転します(つまり、センサーを前方に傾けています)。角度式を、ロールとピッチに基づいて傾斜角度を生成できる数式に置き換えてください。

出力のスクリーンショットを添付しました。私の質問があいまいであると思われる場合は、言い訳をして質問の改善を提案し、回答を得てください。ここに画像の説明を入力

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 に答える