三维矢量中的符号角

时间:2009-07-25 01:00:38

标签: math opengl 3d vector

这是一个纯粹的数学问题,我相信。

我在任意坐标系中都有一个相机对象。我有相机的方向矢量,我有一个矢量指向球的表面北方向。

我希望计算相机相对于北向量的角度。有没有一种简单的方法来计算角度的最终符号?我知道比angle = acos(dir dot north),但是当我实现它时,角度被钳制到[0,180]度。有没有办法弄清楚相机是否正在向东绘画?

5 个答案:

答案 0 :(得分:1)

因此,N是北向量,F是向前向量,V是从球体中间到摄像机当前位置的向量。

N cross V应该为你提供一个向东指向的向量(E)。然后,我想你只想投射(只是点,因为我们只关心标志)F到E并检查标志。积极意味着它指向东方,零意味着它指向北方或南方,负方意味着它指向西方。

根据您对数据的确切问题,您可以摆弄它,但知道如何抓住一个意味着“从我所在的东方”的向量应该有所帮助。

这听起来不错吗?我对这些东西有点生疏。

答案 1 :(得分:0)

  

有没有办法弄清楚相机是否正在向东绘画?

是的,很简单。只需检查相应的相机矢量组件即可。例如,在RH坐标系中,Z为up,如果cameraVector.X> 0,它指向东方。

答案 2 :(得分:0)

当您最初创建球体时,为什么不设置指向北方的变量,因此您可以将所讨论的矢量方向与始终指向北方的参考矢量进行比较。这样,如果你移动相机,那么你的参考可能需要调整,但这是一个已知的数量,你仍然可以参考确定方向。

答案 3 :(得分:0)

你能详细说明一下吗?我想您可能只需要使用前向矢量来越过北向量并检查结果向量的z分量。但我承认我可能会误解你的情况。


行。我再次阅读所有内容(所有问题,答案和评论)。

我认为你想向前和向北交叉,然后用从球体中心到相机位置的矢量点。或者其他什么。

某些样本值怎么样?

答案 4 :(得分:0)

不幸的是没有使用上面的计算。一种方法是将相机矢量投影到与球体相切的D-1表面上,然后检查结果矢量以查看它指向的方向。