phe*_*cks 16
你无法从方向向量得到偏航,俯仰和滚动,因为方向向量只能指出要查看的方向(偏航和俯仰)
为了获得偏航和俯仰你使用三角学 - 我假设你有一些工作知识.查看此Wiki页面,查看一些有用的图表,以查看角度.
设Y =偏航,P =俯仰.
首先得到你想要的偏航:
tan(Y) = x/(-y)
Run Code Online (Sandbox Code Playgroud)
现在获得投球:
tan(P) = sqrt(x^2 + y^2)/z
Run Code Online (Sandbox Code Playgroud)
要获得Y和P的实际值,您需要使用反tan,我已经使用tan将其写在上面以使推导更清晰.
请注意,减号取决于您如何定义角度和轴,但您应该明白这一点.
然后,您可以将roll设置为0或任何您喜欢的.
jjh*_*okk 15
这些方程都没有"错",但都有点笨拙.Ryder052,你的例子没有像你评论的那样考虑某些情况.为什么不使用atan2?
给定单位(归一化)方向向量d
pitch = asin(-d.Y);
yaw = atan2(d.X, d.Z)
Run Code Online (Sandbox Code Playgroud)