无法在 Android 上将设备坐标系转换为世界坐标系
我编写了一段小代码,通过将旋转矩阵(使用 getRotationMatrix)与加速度计值向量(Ax,Ay,Az)相乘,将设备坐标转换为世界坐标。当我运行这个,并且手机是静态的时,我得到一个非常波动的 Z 轴值(从 9.3 到 10.3),其他两个为 0。但是,当我在任何方向上给手机一些加速度时,它仍然没有。 t 显示这些值的任何变化并且它们保持为零。这是我获取值的代码部分。
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 更好?
I have written a small code to convert the device co-ordinates into world co-ordinates by multiplying the Rotation matrix(using getRotationMatrix) and the vector (Ax,Ay,Az) which are the accelerometer values. When I run this, and the phone is static, I get a very fluctuating value for the Z axis(from 9.3 to 10.3) and the other two are 0. However when I give the phone some acceleration in any direction , it still doesn't show any change to those values and they remain zero. This is the part of the code where I get the values.
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];
}
Also I would like to know if it would be better to get the rotation matrix based on the orientation sensor on my own or use the inbuilt getRotationMatrix?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论