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);