我正在尝试旋转位于(X,Y,Z)=(0,0,0)
我的 OpenGL 世界的模型(地形)。+X
是东,-Z
是北,+Y
是海拔。View 正在寻找,因为设备放置在指向北方的桌子上时,-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
无济于事