【发布时间】:2013-10-10 11:51:11
【问题描述】:
我正在尝试旋转位于我的 OpenGL 世界的 (X,Y,Z)=(0,0,0) 的模型(地形)。 +X 是东,-Z 是北,+Y 是海拔。视图正在寻找-Y,因为设备位于指向北方的桌子上时,设备的欧拉角为(0°,0°,0°)。
问题:
我需要切换设备的轴以将测量角度device -y 更改为device z。
目前围绕device x-axis 工作(结果围绕World X-axis 旋转)。
但是围绕device y 旋转会导致围绕World Y 旋转而不是World -Z 并围绕device z 旋转会导致围绕World Z 而不是World Y 旋转。
现在我已经没有如何解决这个问题的想法了。哪位大神可以指点一下?
(OpenGL) (Device)
^ +Y-axis ^ +z-axis
* *
* *
* * ^ +y-axis (North)
* * *
* * *
* * *
************> + X-axis ************> +x-axis
*
*
v +Z-axis (Minus North)
到目前为止我所做的尝试:
- 使用来自
SensorManager.getOrientation的欧拉角 并切换角度工作正常,尽管我在接近 90 度的俯仰角处进入万向节锁定。所以我正在寻找另一种解决方案(SensorManager旋转矩阵或四元数)。 -
SensorManager.remapCoordinateSystem在几乎所有可能的星座中 -> 无济于事 - 从
SensorManager.getRotationMatrix更改我的旋转矩阵的列/行 -> 没有帮助
【问题讨论】:
标签: android opengl-es matrix rotation sensormanager