3D矢量屏幕角度

时间:2015-01-27 07:27:03

标签: unity3d trigonometry

我的数学太生疏了,无法解决这个问题。我想得出3d矢量的屏幕角度(在2d屏幕上看到的角度)。

给定矢量的x和y旋转(z旋转为零且不是mstter),屏幕上的角度是什么样的?

我们知道当y为零且x为正时,角度为90.当y为零且x为负时,角度为-90。当y为90时,对于x的任何值,角度为180.当y为-90时,对于x的任何值,角度为0.

那么这里的公式是什么,所以我可以推导出x和y旋转的其他值的角度?

3 个答案:

答案 0 :(得分:1)

如上所述,这个问题没有意义。如果您将z保持为零旋转,则您已将3D问题转换为2D。此外,您测量的角度似乎来自y轴,这很好但会改变最终公式。通常,角度是从x轴测量的,三角函数将假定为。最后,如果使用笛卡尔坐标,保持y常数将不会保持角度恒定(并且从您为x描述的系统,角度将在-90到90的范围内 - 但不包括终点)。

上面提到的反正切函数假定从x轴测量的角度。

答案 1 :(得分:0)

可以使用y/x比率的反正切计算角度。在unity3d协调系统(左撇子)你可以得到角度,

angle = Mathf.Rad2Deg * Mathf.Atan(y/x);

答案 2 :(得分:0)

你的问题是三维矢量会是什么样的。

发布添加的透视信息后

编辑) 如果你从z轴等距看它,那么矢量的z值是什么并不重要。

(假设起点为0,0,0)

1,1,2看起来与1,1,3相同。

对于z1和z2的任何值,所有x,y,z1看起来与任何x,y,z2相同

你可以通过绘制更高的z值来创造一种“在页面之外”的错觉。它不会改变角度,但它会是z值的视觉提示。

最后,您可以使用Dinal24的方法。您将应用相同的技术两次,一次用于x / y,然后再用z。

此页面可能会有所帮助:http://www.mathopenref.com/trigprobslantangle.html

不要自己编写代码,而是尝试找到已经执行此操作的库,例如https://processing.org/reference/PVector.html