欧拉角和四元数一直不是太懂,所以最近补一补,先搞清楚应用方面吧
public void ToAngleAxis(out float angle, out Vector3 axis);
其中参数angle为旋转角;参数axis为轴向量。
将对象现在的角度转换成轴向与旋转角。
void AngleAxis(float angle,Vector3 axis)
通过旋转角与轴向量来确定对象的角度
void SetFromToRotation(Vector3 fromDirection,Vector3 toDirection)
var a:Vector3;
var b:Vector3;
var q:Quaternion;
var headUpDir:Vector3;
q.SetFromToRotation(a,b);
transform.rotation=q;
headUpDir=transform.TransformDirection(Vector3.Forward);
输入:a=Vector3(0,0,1); b=Vector3(0,1,0)//把z轴朝向y轴
输出: q=(-0.7,0,0,0.7); headUpDir=(0,1,0)
意思是如果定义一个四元数,那么通过调用这个函数则可返回这个旋转过程。
void SetLookRotation (Vector3 view ,Vector3 up = Vector3.up)
这个函数建立一个旋转使z轴朝向view y轴朝向up。
同样是Quaternion类里面的
四元数运算符也被重载了
Dot为点乘
为组合旋转
旋转一个点