ANSA的视觉可以通过函数GetViewAngles获取,但是该函数获取的是绕原始坐标系的旋转角度向量(α,β,θ),在实际使用过程中,我们更希望获取视角向量以计算相关向量夹角。下面对视角向量进行推导。
import math
import typing
def getViewVector()->typing.Tuple[float]:
# 获取视角转动角
angles:typing.List[float] = base.GetViewAngles()
angleRad = map(math.radians, angles)
rotateSin:typing.List[float] = list(map(sin, angleRad))
rotateCos:typing.List[float] = list(map(cos, angleRad))
# 计算视角向量三分量
temp:float = rotateCos[0]*rotateSin[1]
x:float = temp*rotateCos[2] + rotateSin[0]*rotateSin[2]
y:float = temp*rotateSin[2] - rotateSin[0]*rotateCos[2]
z:float = rotateCos[0]*rotateCos[1]
return (x, y, z)