Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
Android:理解remapCoordinateSystem的功能_Android_Screen Orientation_Device Orientation_Rotational Matrices - Fatal编程技术网

Android:理解remapCoordinateSystem的功能

Android:理解remapCoordinateSystem的功能,android,screen-orientation,device-orientation,rotational-matrices,Android,Screen Orientation,Device Orientation,Rotational Matrices,我一直在努力理解这两行代码 SensorManager.getRotationMatrix(RTmp, I, grav, mag); SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot); 我读书,但我迷路了 有人能给我解释一下getRotationMatrix和remapCoordinateSystem到底是做什么的吗?特别是SensorManager.

我一直在努力理解这两行代码

SensorManager.getRotationMatrix(RTmp, I, grav, mag); 
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot);
我读书,但我迷路了


有人能给我解释一下
getRotationMatrix
remapCoordinateSystem
到底是做什么的吗?特别是
SensorManager.AXIS\ux
SensorManager.AXIS\u-Z

完全断章取义地问这样的问题通常很难回答。您还应该熟悉格式(例如:4个空格表示代码):

然而:

我要说的是,您使用文档的方法是正确的。如您所见,getRotationMatrix提取将“世界坐标系”转换为当前设备坐标系所需的当前旋转矩阵。 此外,RemapCoordinates系统根据给定的旋转矩阵变换给定的坐标系。
但是如上所述-断章取义,很难告诉您为什么有人这样做。

我相信
getRotationMatrix()
返回一个旋转矩阵,它将设备坐标转换为世界坐标,如中所述,而不是“世界”转换为“设备”

计算倾斜矩阵I以及旋转矩阵R 将向量从设备坐标系转换为 定义为直接正交基础的世界坐标系,其中


我认为@Noname清楚地解释了
getRotationMatrix()
的功能。考虑到
remapcoordinancesystem()
SensorManager.AXIS\u X
SensorManager.AXIS\u-Z
,我试图回答您的第二个和第三个问题。

remapCoordinateSystem()
所做的实际上是更改坐标系,设置新的X、Y、Z轴,其中
SensorManager.AXIS\u X
SensorManager.AXIS\u-Z
是手机的坐标系。从你的代码来看,我相信你在做纵向增强现实。这就是为什么您将Y轴设置为
SensorManager.axis_减_Z
FYI。如果要在横向方向上执行相同的操作,将按如下方式设置坐标系:

SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, Rot);
我希望这有帮助。

这可能会有帮助:
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, Rot);