相关疑难解决方法(0)

如何将方向矢量转换为欧拉角?

我正在寻找一种方法将方向矢量(X,Y,Z)转换为欧拉角(航向,俯仰,坡度).我知道方向矢量本身不足以获得倾斜角度,因此还有另一个所谓的向上矢量.

有方向向量(X,Y,Z)和向上向量(X,Y,Z)我如何将其转换为欧拉角?

math geometry euler-angles

17
推荐指数
2
解决办法
3万
查看次数

计算旋转以查看3D点?

我需要计算3D物体面向任意3D点的2个角度(偏航和俯仰).这些旋转被称为"欧拉"旋转,仅仅因为在第一次旋转之后(假设Z,基于下图),Y轴也随着物体旋转.

这是我正在使用的代码,但它没有完全正常工作.当在地平面(Y = 0)上时,物体正确旋转以面向该点,但是一旦我在Y中向上移动该点,旋转看起来就不正确.

// x, y, z represent a fractional value between -[1] and [1]
// a "unit vector" of the point I need to rotate towards

yaw = Math.atan2( y, x )
pitch = Math.atan2( z, Math.sqrt( x * x + y * y ) )
Run Code Online (Sandbox Code Playgroud)

你知道如何计算给定点的2个欧拉角吗?


下图显示了我旋转的方式.这些是我需要计算的角度.(唯一的区别是我按X,Y,Z顺序旋转物体而不是Z,Y,X)

pic http://i53.tinypic.com/33lo6jp.jpg

在此输入图像描述


这是我的系统.

  • 坐标系是x =向右,y =向下,z =向后
  • 一个对象默认为(0,0,1),面向后方
  • 旋转的顺序为X,Y,Z,其中X上的旋转是俯仰,Y是偏航,Z是滚动

我的系统

math 3d angle rotation euler-angles

12
推荐指数
2
解决办法
3万
查看次数

旋转矩阵之间的插值

我有2个旋转矩阵(让我们称之为A和B),其中:

A = 1  0  0
    0  0 -1
    0  1  0
Run Code Online (Sandbox Code Playgroud)

B = -1  0  0
     0  0 -1
     0 -1  0
Run Code Online (Sandbox Code Playgroud)

这基本上只是一个旋转,相机旋转在后面看自己.显然,我不能直接在矩阵中插值,因为它看起来很奇怪.我已经尝试将矩阵转换为欧拉角,产生2组X,Y,Z角,并试图根据X,Y,Z角的每个分量之间的最小距离确定使用哪个角.这肯定会产生我想要的那种旋转,但是我想不出一个合适的方法来确定插入哪个角度,因为有时导致最小误差的角度组会导致围绕错误的轴/轴旋转.我也尝试了四元数,但这基本上给了我相同的结果.谁能指出我正确的方向?

opengl interpolation rotation matrix

12
推荐指数
2
解决办法
7268
查看次数

Android方向传感器的奇怪行为

目前,我正在尝试使用方向传感器值使用getRotation()方法旋转3D立方体.当Android设备旋转到某些边界以上时,会观察到一些意外行为.例如,如果我让设备'站起来','roll'的价值就变得疯狂了.

此外,我正在经历类似于所谓的万向节锁定的现象.唯一的区别是,即使在将传感器值应用于3D旋转之前,我也遇到了这个问题.当我尝试通过仅围绕"俯仰"轴旋转设备来改变"俯仰"值时,"偏航"值也会根据俯仰的旋转而改变.这对我来说似乎完全不合理.

有人能帮帮我吗?我在这个问题上坚持了一个月.

android rotation sensor accelerometer orientation

9
推荐指数
1
解决办法
1万
查看次数