1

我有一个相机四元数 (a,b,c,d) 和一个凸轮位置 (camX, camY, camZ) 我有一个具有 3d 坐标 (x,y,z) 的对象

我需要计算方位角,物体相对于凸轮视图方向和平面的仰角。

第一个问题如果我把物体放在我的视野中心,f我旋转凸轮,平移它,我应该有相同的方位角值,对吧??我没有那个。

第二个问题,计算。我正在做对象坐标 - 凸轮位置,以便将对象转换为凸轮。我得到了结果坐标,并用四元数及其共轭制作了三明治产品。(我遵循这个伪代码: http: //fr.wikipedia.org/wiki/Quaternions_et_rotation_dans_l'espace

然后,我有一个向量结果,我取 X & Z 分量并计算 atan2

看起来对吗?

任何线索或解释都会在我的斗争中帮助我很多

4

1 回答 1

2

您描述的第二个计算似乎非常接近正确,但是您应该验证几个基本假设。我稍后会讨论这些。但是,您的第一个问题没有意义。

旋转和平移几乎都会改变方位角值。如果你直视物体,azimuth==0. 如果再向左旋转 90°,方位角显然也改变了 90°。如果你然后向前迈出一步(长度x),你的方位角刚刚增加了一个atan(x/d)度数(d物体在你前面的原始距离在哪里)。

至于找到方位角和仰角,您的计算取决于关于世界默认方向的假设。即,如果您的相机坐标是[0,0,0],则四元数是身份旋转,那么相机朝向什么方向,向上的方向是什么?通常,'up'+y和 forward 是-z。如果是这种情况,那么您将这样计算:

p = q'*(obj-cam)*q
az = atan2(p.x,-p.z)
el = asin(p.y/sqrt(p.x*p.x + p.y*p.y + p.z*p.z))

哪里q'是四元数共轭/逆(只是 negate q.w)并且*是四元数乘法(w向量的分量设置为零)。

于 2012-07-06T15:05:21.800 回答