2

回転行列 (getRotationMatrix を使用) と加速度計の値であるベクトル (Ax、Ay、Az) を乗算することにより、デバイス座標をワールド座標に変換する小さなコードを作成しました。これを実行すると、電話が静的で、Z 軸の値が非常に変動し (9.3 から 10.3)、他の 2 つは 0 になります。ただし、電話に任意の方向に加速度を与えると、それでも変化しません。これらの値に変化が見られず、ゼロのままです。これは、値を取得するコードの一部です。

     if(ctp.getType()==Sensor.TYPE_ACCELEROMETER){
            Ca[0]=event.values[0];  
            Ca[1]=event.values[1];
            Ca[2]=event.values[2];
            SensorManager.getRotationMatrix(R, I, Ca , Cm);
            for(i=0;i<16;i++)
                rotmat[i/4][i%4]=R[i];
            fAx=0;
            fAy=0;
            fAz=0;
            Ca[3]=0;
            for(i=0;i<4;i++){
                fAx+=rotmat[0][i]*Ca[i];
                fAy+=rotmat[1][i]*Ca[i];
                fAz+=rotmat[2][i]*Ca[i];                    
            }
            buff1.append(fAx);              
            x.setText(buff1.toString());
            buff2.append(fAy);
            y.setText(buff2.toString());
            buff3.append(fAz);
            z.setText(buff3.toString());  
        }
        else if(ctp.getType()==Sensor.TYPE_MAGNETIC_FIELD){
            Cm[0]=event.values[0];  
            Cm[1]=event.values[1];
            Cm[2]=event.values[2];
        }

また、自分で方向センサーに基づいて回転行列を取得するか、組み込みの getRotationMatrix を使用する方がよいかどうかを知りたいですか?

4

0 に答える 0