- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
u3d07用quaternion来对一个坐标点进行旋转
u3d07用quaternion来对一个坐标点进行旋转
在unity3d中,用四元数来表示旋转,四元数英文名叫quaternion . 比如 transform.rotation 就是一个四元数,其由四个部分组成 Quaternion xi + yj + zk + w x,y,z,w 1. /wiki/Quaternion 有四元数的定义 2. /wiki/Quaternions_%26_spatial_rotation 有关四元数旋转方面的基本概念和用法 quaternion 中 x,y,z 跟旋转轴有关, w 与绕旋转轴旋转的角度有关,因为它们都要经过代数运算才能得出旋转轴和旋转角度 在unity3d中, quaternion 的乘法操作 operator * 有两种操作: 1 quaternion * quaternion , 例如 q t * p; 这是将一个点先进行t 操作旋转,然后进行p操作旋转. 2 Quaternion * Vector3, 例如 p : Vector3, t : Quaternion , q : Quaternion; q t * p; 这是将点p 进性t 操作旋转; 我进行的是第2种操作,即对一个向量进行旋转; 首先 ,Quaternion 的基本数学方程为 : Q cos a/2 + i x * sin a/2 + j y * sin a/2 + k z * sin a/2 a 为旋转角度 Q.w cos angle / 2 Q.x axis.x * sin angle / 2 Q.y axis.y * sin angle / 2 Q.z axis.z * sin angle / 2 我们只要有角度就可以给出四元数的四个部分值,例如我想要让点M Vector3 o,p,q 绕x轴顺时针旋转90度;那么对应的quaternion数值就应该为: Q : Quaternion; Q.x 1 * sin 90度/2 sin 45度 0.7071 Q.y 0; Q.z 0; Q.w cos 90度/2 cos 45度 0.7071 Q 0.7071, 0 , 0 , 0.7071 ; m Q * m; (将点m 绕 x轴 1,0,0 顺时针旋转了90度
这是quaternion 的最基本用法,主要给出角度,就可以算出Quaternion,然后对点坐标进行旋转。
四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示四个值。
四元数是最简单的超复数。复数是由实数加上元素 i 组成,其中i^2 -1 \,。 相似地,四元数都是由实数加上三个元素 i、j、k 组成,而且它们有如下的关系: i^2 j^2 k^2 ijk -1 \, 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi + cj + dk \,。/view/319754.htm
现在只说说在unity3D中如何使用Quaternion来表达物体的旋转。
基本的旋转我们可以用脚本内置旋转函数transform.Rotate 来实现但是当我们希望对旋转角度进行一些计算的时候,就要用到四元数Quaternion了。我对高等数学来说就菜鸟一个,只能用最朴素的方法看效果了。
Quaternion的变量比较少也没什么可说的,大家一看都明白。唯一要说的就是x\y\z\w的取值范围是[-1,1],物体并不是旋转一周就所有数值回归初始值,而是两周。
初始值: 0,0,0,1
沿着y轴旋转:180° 0,1,0,0 360°(0,0,0,-1)540° 0,-1,0,0 720° 0,0,0,1
沿着x轴旋转:180° -1,0,0,0 360°(0,0,0,-1)540° 1,0,0,0 720° 0,0,0,1
无旋转的写法是Quaternion.identify
现在开始研究Quaternion的函数都有什么用。
函数
1)function ToAngleAxis out angle : float, out axis : Vector3 : void
Description
Converts a rotation to angle-axis representation
这个函数的作用就是返回物体的旋转角度(物体的z轴和世界坐标z轴的夹角)和三维旋转轴的向量到变量out angle 和out axis
脚本:
var a 0.0;
var b Vector3.zero;
transform.rotation.T
文档评论(0)