什么是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的计算方式的更多相关文章

  1. 【转】【Unity】四元数(Quaternion)和旋转

    http://blog.csdn.net/candycat1992/article/details/41254799

  2. 学习和研究下unity3d的四元数 Quaternion

    学习和研究下unity3d的四元数 Quaternion 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示 ...

  3. unity3d的四元数 Quaternion

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/02/2995074.html 今天准备学习和研究下unity3d的四元数 Quaternion ...

  4. Quaternion 四元数

    Quaternions are used to represent rotations. 四元数用于表示旋转. They are compact, don't suffer from gimbal l ...

  5. 四元数Quaternion的基本运算

    技术背景 在前面一篇文章中我们介绍了欧拉角死锁问题的一些产生背景,还有基于四元数的求解方案.四元数这个概念虽然重要,但是很少会在通识教育课程中涉及到,更多的是一些图形学或者是工程学当中才会进行讲解.本 ...

  6. Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()

    四元数百度百科: 传送门 四元数官方文档: 传送门 欧拉旋转.四元数.矩阵旋转之间的差异: 传送门 四元数转换为欧拉角eulerAngles 官方文档: 传送门 欧拉角转换为四元数Euler 官方文档 ...

  7. System.currentTimeMillis()计算方式与时间的单位转换

    目录[-] 一.时间的单位转换 二.System.currentTimeMillis()计算方式 一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 ...

  8. NTC(负温度)热敏电阻.阻值的计算方式

    来源 :http://blog.csdn.net/blue0432/article/details/8690190 现在低成本测温方案中NTC热敏电阻用的比较多,一般采用查表的方法获取温度值,这就牵涉 ...

  9. mysql中TPS, QPS 的计算方式

    今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么? 以前确实也没有关注过这个计算公式,所以查了下学习了下: 下面是参考内容.  在做db基准测试的时候,qps,tps 是衡量数 ...

随机推荐

  1. 【转】RestQL:现代化的 API 开发方式

    原文:http://tech.meituan.com/koa-restql.html RestQL:现代化的 API 开发方式 李鑫 ·2016-08-12 11:26 koa-restql 已经在  ...

  2. Spring中实现监听的方法

    在未使用框架进行编程的时候,我们常常在web.xml中加上这样一段话 <listener> <listener-class>XXX</listener-class> ...

  3. 关于Spring的69个面试问答——终极列表

    本文由 ImportNew - 人晓 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 这篇文章总结了一些关于Spring框架的重要问题,这些问题都是你在面试或笔试过程中可能会 ...

  4. 非常简单的oracle和mysql数据互传

    工具是navicat,我用的是Navicat Premium 10: 这个工具可以同时连接mysql和oracle,如图: 同时连接上这两个库之后 工具->数据传输 左边是数据源,右边是导入目标 ...

  5. Zookeeper: configuring on centos7

    thispassage is referenced, appreciated. ZooKeeper installation: Download from this site Install java ...

  6. stock 当天盘势

    看盘 (一)怎样看大盘当天的指数收阴.收阳 投资者每天都看大盘,但多数人看不准大盘.大盘到底当天是收阴,还是收阳?我通过很长时间的记录.验证,发现大盘在正常时间内,收阴.收阳是有规律的.我判断的准确率 ...

  7. opentsdb

    http://blog.javachen.com/2014/01/22/all-things-opentsdb.html http://blog.csdn.net/bingjie1217/articl ...

  8. zf-关于注册码全部错误的解决方法

    之所以错误,是因为这里的用户名称是石首市政务服务中心. 在数据库里把这个字段改成 上海卓繁 就可以了 一般都是在 SYS_INFO 这张表里面改

  9. 【转】The magic behind array length property

    Developer deals with arrays every day. Being a collection, an important property to query is the num ...

  10. 微信公众号系列 --- ionic在IOS的键盘弹出问题

    在使用ionic开发IOS系统微信的时候会有一个苦恼的问题,填写表单的时候键盘会挡住输入框,其实并不算什么大问题,只要用户输入一个字就可以立刻看见输入框了. 可惜的是,有些客户是不讲理的,他才不管这个 ...