对Unity3D 中Quaternion一些整理

原文地址为: 对Unity3D 中Quaternion一些整理

Quaternion 中文是四元数。记得计算机图形学中,在X,Y,Z的基础上添加了新的一个W。这样算是所谓的四元数。具体的解释可以参考,百科等。

Quaternion.AngleAxis ,AngleAxis角轴

  绕Axis轴,旋转Angle角度。例如:绕Y轴旋转30度。

transform.rotation = Quaternion.AngleAxis(30,Vector3.up);//Vector3.up代表的是Y轴正方向。

Quaternion.Angle  返回的是 a 和 b 之间的角度。

float angle = Quaternion.Angle(transform.rotation,target.rotation);//返回的是transform和target两个之间的角度

Quaternion.Dot 两个旋转之间的点乘。点乘即所谓的内积,学过数学的都知道内积。简单点就是对应坐标相乘在相加。
print(Quaternion.Dot((transform.rotation,target.rotation));

Quaternion.eularAngle 返回表示旋转的欧拉角度。绕z轴旋转euler.z度,绕x轴旋转euler.x度,绕y轴旋转euler.y度。这样的顺序,就是绕轴旋转的角度
 var rotation = Quaternion.identity;
rotation.eulerAngles = new Vector3(0,30,0) ;

Quaternion.Eular 返回表示旋转的欧拉角度。绕z轴旋转euler.z度,绕x轴旋转euler.x度,绕y轴旋转euler.y度。这样的顺序,可以理解成两个向量之间的角度。

Quaternion.Euler(Vector3(0,30,0));


Quaternion.FromToRotation 旋转一个变换的其中一个轴,即旋转一个轴到另一个轴的位置。
Quaternion.identity. 无旋转。

Quaternion.Lerp(from,to,float t).通过t值from 向to之间插值,并且规范化结果。

transform.rotation = Quaternion.Lerp(from.rotationg,to.rotation,Time.deltatime);

static function Slerp(from:Quaternino,to:Quaternion,t:float); 球形插值,通过t值from向to 之间插值。

transform.rotation = Quaternion.Slerp(from.rotation,to.rotation,Time.delttime);

Quaternion.LookRotation  注释旋转  创建一个旋转,沿着forward(z轴)并且头部沿着upwards(y轴)的约束注视。也就是建丽一个旋转,使z轴朝向view,y轴朝向up

transform.rotation = Quaternion.LookRotation(target.position-transform.position);

注意:在检视面板中显示的Rotation的值就是Euler值,但是你要是在代码中写到 transform.rotation.这时获取的值是四元数。这时你要是想将四元数转换成Rotation,就要进行一系列的计算。但是你如果想直接获取物体的角度。这时,你可以使用transform.rotation.eulerAngles获取此时的角度。即旋转的角度。


转载请注明本文地址: 对Unity3D 中Quaternion一些整理

猜你喜欢

转载自blog.csdn.net/wangchaoqi1985/article/details/80924877
今日推荐