当前位置:  开发笔记 > 编程语言 > 正文

如何从偏航,俯仰和滚动中获得RotationMatrix

如何解决《如何从偏航,俯仰和滚动中获得RotationMatrix》经验,为你挑选了0个好方法。

嗨我设法在我的Android应用程序中找到了来自加速器和磁传感器的偏航,俯仰和滚动.我现在想根据角度来旋转我的场景中的一个点周围的相机目标(min3d).结果是能够通过移动Android设备来查看3d场景.我已经尝试了几天几乎阅读所有相关的答案,但我不能让它工作.

我得到的运动绝对没有感觉.我证实我的偏航在0-360之间并且是正确的,音高在-90到90之间且是正确的,最后滚动在-180和180之间并且是一致的.

基本上我正在通过我的目标和向上矢量进行矩阵旋转和乘法.

float[] rotation = new float[16];   
Matrix.setIdentityM(rotation, 0);
Matrix.rotateM(rotation, 0, (float) Math.toDegrees(roll), 0, 0, 1);         
Matrix.rotateM(rotation, 0, (float) Math.toDegrees(pitch)+90f, 1, 0, 0);        
Matrix.rotateM(rotation, 0, (float) Math.toDegrees(-azimut), 0, 1, 0);      

float[] target = new float[4];
float[] source = new float[]{0,0,150,0};    
Matrix.multiplyMV(target, 0,rotation, 0, source, 0);
float targetX = target[0] + 0;
float targetY = target[1] + 150;
float targetZ = -target[2] + 0;

target = new float[4];
source = new float[]{0,1,0,0};
Matrix.multiplyMV(target, 0,rotation, 0, source, 0);
float upX = target[0];
float upY = target[1];
float upZ = target[2];

scene.camera().target.x = targetX;              
scene.camera().target.y = targetY;
scene.camera().target.z = targetZ;      
scene.camera().upAxis.x = upX;
scene.camera().upAxis.y = upY;
scene.camera().upAxis.z = upZ;

最初我的目标是(0,0,150),我的向上是(0,1,0).

感谢您的任何帮助.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有