[Unity Quaternion]四元数Quaternion的计算方式
什么是Quaternion四元数
1843年,William Rowan Hamilton发明了四元数,但直到1985年才有一个叫Ken Shoemake的人将四元数引入计算机图形学处理领域。四元数在3D图形学中主要用于旋转,骨骼动画等。

简单地来说,四元数描述了一次旋转:绕任意一个轴(V)旋转一个弧度(θ)。
那么四元数q就与(V,θ)两个参数有关。
具体公式:
q = (sin(θ / 2) * V,cos(θ / 2) )
q = (sin(θ / 2) * x,sin(θ / 2) * y,sin(θ / 2) * z,cos(θ / 2))
在Unity中使用Quaternion对象
创建Quaternion对象
//
float radians = 90 / 360f * Mathf.PI * 2;
//
Vector3 n = Vector3.up; //
float w = Mathf.Cos (radians / 2);
//
float s = Mathf.Sin (radians / 2); //
float x = n.x * s;
float y = n.y * s;
float z = n.z * s; //
transform.rotation = new Quaternion (x, y, z, w);
上述代码,可以设置一个游戏对象沿着Y轴向上的方向顺时针旋转90度
Quaternion对象的方法
实例方法
Set用法
//
float radians = degress / 360f * Mathf.PI * 2;
//
Vector3 n = Vector3.up; //
float w = Mathf.Cos (radians / 2);
//
float s = Mathf.Sin (radians / 2); //
float x = n.x * s;
float y = n.y * s;
float z = n.z * s; //
Quaternion q = new Quaternion ();
q.Set (x, y, z, w); //
transform.rotation = q;
SetFromRatation用法
//
Quaternion q = new Quaternion ();
q.SetFromToRotation (Vector3.up, Vector3.left); //
transform.rotation = q;
SetLookRotation用法
//
Quaternion q = new Quaternion ();
q.SetLookRotation (Vector3.back); //
transform.rotation = q;
静态方法
//
transform.rotation = Quaternion.identity; //
transform.rotation = Quaternion.AngleAxis (degress, Vector3.up); //
transform.rotation = Quaternion.Dot (q1, q2); //
transform.rotation = Quaternion.Inverse (q1); //
transform.rotation = Quaternion.Lerp(q1,q2,Time.deltaTime); //
transform.rotation = Quaternion.Slerp (q1, q2, Time.deltaTime);
[Unity Quaternion]四元数Quaternion的计算方式的更多相关文章
- 【转】【Unity】四元数(Quaternion)和旋转
http://blog.csdn.net/candycat1992/article/details/41254799
- 学习和研究下unity3d的四元数 Quaternion
学习和研究下unity3d的四元数 Quaternion 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示 ...
- unity3d的四元数 Quaternion
原地址:http://www.cnblogs.com/88999660/archive/2013/04/02/2995074.html 今天准备学习和研究下unity3d的四元数 Quaternion ...
- Quaternion 四元数
Quaternions are used to represent rotations. 四元数用于表示旋转. They are compact, don't suffer from gimbal l ...
- 四元数Quaternion的基本运算
技术背景 在前面一篇文章中我们介绍了欧拉角死锁问题的一些产生背景,还有基于四元数的求解方案.四元数这个概念虽然重要,但是很少会在通识教育课程中涉及到,更多的是一些图形学或者是工程学当中才会进行讲解.本 ...
- Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()
四元数百度百科: 传送门 四元数官方文档: 传送门 欧拉旋转.四元数.矩阵旋转之间的差异: 传送门 四元数转换为欧拉角eulerAngles 官方文档: 传送门 欧拉角转换为四元数Euler 官方文档 ...
- System.currentTimeMillis()计算方式与时间的单位转换
目录[-] 一.时间的单位转换 二.System.currentTimeMillis()计算方式 一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 ...
- NTC(负温度)热敏电阻.阻值的计算方式
来源 :http://blog.csdn.net/blue0432/article/details/8690190 现在低成本测温方案中NTC热敏电阻用的比较多,一般采用查表的方法获取温度值,这就牵涉 ...
- mysql中TPS, QPS 的计算方式
今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么? 以前确实也没有关注过这个计算公式,所以查了下学习了下: 下面是参考内容. 在做db基准测试的时候,qps,tps 是衡量数 ...
随机推荐
- coco2d-x CCDirector.h文件中变量*m_pNotificationNode*
1.在CCDiretor.h中有如下说明 /** This object will be visited after the main scene is visited. This object MU ...
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- eclipse背景颜色修改插件color theme
对于长时间编码的程序猿来说,这个插件可以说是福音了. 安装方式有两种: 1.可以直接在eclipse的eclipse marketplace 那里搜索安装 2.可以在Help->Install ...
- 为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法.简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的 ...
- lucene特殊字符处理
这是个郁闷的问题,今天遇到了,但在lucene中查询的关键字保护有特殊字符,譬如--,会出现如下异常: org.apache.lucene.queryParser.ParseException: Ca ...
- Ubuntu下载工具 uget+aria2
一.安装. uget和aria2都可以在“软件中心”中安装,但是版本太老啦,无法发挥作用,所以最好还是在终端中添加ppa进行安装: 1.uget的安装: sudo add-apt-repositor ...
- 基于VirtualBox 安装和配置Fuel OpenStack(V6.1)
1.环境准备 准备一台内存较大的主机,12G以上 下载安装VirtualBox及其匹配的扩展包 virtualbox: http://download.virtualbox.org/virtualbo ...
- EM阅读资料
1,从最大似然到EM算法浅解 2,(EM算法)The EM Algorithm 3,数据挖掘十大算法----EM算法(最大期望算法) (番外)最大后验估计(MAP)
- VLAN及Trunk实验
VLAN及Trunk实验 一 基本VLAN试验 实验拓扑: 实验目的:掌握VLAN基本配置 掌握静态接口VLAN划分 实验需求:在交换机switch上面创建两个VLAN,vlan2和vlan3,vla ...
- Html 中表单提交的一些知识总结——防止表单自动提交,以及submit和button提交表单的区别
转自:http://jackaudrey.blog.163.com/blog/static/1314217882010590041833/ 在页面中有多个input type="text&q ...