Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在android上将设备坐标系转换为世界坐标系_Java_Android_Coordinate Systems_Android Sensors_Coordinate Transformation - Fatal编程技术网

Java 无法在android上将设备坐标系转换为世界坐标系

Java 无法在android上将设备坐标系转换为世界坐标系,java,android,coordinate-systems,android-sensors,coordinate-transformation,Java,Android,Coordinate Systems,Android Sensors,Coordinate Transformation,我编写了一个小代码,通过乘以旋转矩阵(使用getRotationMatrix)和矢量(Ax、Ay、Az),将设备坐标转换为世界坐标,这是加速度计的值。当我运行这个,手机是静态的,我得到一个非常波动的Z轴值(从9.3到10.3),另外两个是0。然而,当我给手机在任何方向的加速度,它仍然没有显示任何变化,这些值保持零。这是代码中获取值的部分 if(ctp.getType()==Sensor.TYPE_ACCELEROMETER){ Ca[0]=event.value

我编写了一个小代码,通过乘以旋转矩阵(使用getRotationMatrix)和矢量(Ax、Ay、Az),将设备坐标转换为世界坐标,这是加速度计的值。当我运行这个,手机是静态的,我得到一个非常波动的Z轴值(从9.3到10.3),另外两个是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];
        }
if(ctp.getType()==Sensor.TYPE\u加速计){
Ca[0]=事件值[0];
Ca[1]=事件值[1];
Ca[2]=事件值[2];
SensorManager.getRotationMatrix(R、I、Ca、Cm);
对于(i=0;i