Unity --- 三维数学 --- 欧拉角与四元数

这篇具有很好参考价值的文章主要介绍了Unity --- 三维数学 --- 欧拉角与四元数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

1.Transfrom中的Rotation中的x,y,z三个值就是对应着三个方向上的欧拉角

2.注意物体沿Y轴方向旋转时,是沿世界坐标系的Y轴旋转,而不是沿自身的Y轴旋转

3.一个物体三个方向上的欧拉角是用一个Vector3三维向量对象来表示的 --- (x,y,z)分别对应三个方向上的欧拉角unity 欧拉角 坐标系,计算机组成,unity,游戏引擎1.接下来开始细数欧拉角的缺点:unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 1.三维向量Vector3类有三个值,可以分别表示x,y,z三个轴所对应的欧拉角unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

1.Vector3类中的x,y,z三个变量都是只读变量,不能够进行写入修改操作,如果想改变一个Vector3对象的x,y,z的话只能够通过向量的加减乘除(除只能与标量,乘则分为点乘和叉乘)

具体的修改步骤如上图unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

由于万向节死锁是使用欧拉角表示旋转时一个无法解决的问题,于是数学家们引入了四元数来替代欧拉角表示旋转

unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

1.quaternion(四元数) --- 由四元数控制的旋转首先需要给定空间中的任意一个轴,然后还需要给定绕该轴旋转多少弧度,获得这两个数据之后才能够实现游戏物体绕轴旋转一定度数。

2.调用this.transform.rotation后就会返回一个四元数类的对象,该对象表示的就是当前游戏物体的旋转状态。

unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 1.通过创建四元数来修改游戏物体的旋转状态的流程:

a.首先创建一个四元数对象,并用引用指向它

b.确定游戏物体要绕哪个轴旋转,旋转的弧度为多少 --- 轴的本质其实就是向量(起点为世界坐标系原点,所以创建轴其实就相当于创建一个Vector3类对象,这个对象所对应的向量就是我们旋转要绕的轴)

而旋转所需的弧度则可以通过先确定要转的角度,然后角度转弧度(Mathf.Deg2Rad)

c.设置表示新的旋转状态的四元数 --- 根据给定的公式和已经确定好的轴与弧度,将四元数所需的x,y,z,w四个数初始化好

d.将新的四元数赋值给this.transfrom.rotation,更新游戏物体的四元数,使其旋转状态发生变化unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

 1.上面的这些步骤Unity都已经帮我们封装好了,最终封装的结果就是上面这样

调用Quaternion类中的静态方法Euler() --- 该方法需要传三个参数,分别是绕x轴,y轴以及z轴旋转的角度 --- 传好参数之后该方法就会将传过来的欧拉角转换为四元数并返回 --- 而使用四元数表示旋转就不会出现万向节死锁。unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

上面介绍的是四元数的运算规则:

1.两个四元数相乘能够组合旋转效果,比如第一个四元数能够旋转绕z轴旋转10°,第二个能够绕z轴旋转40°,相乘组合起来就能够绕z轴旋转50°unity 欧拉角 坐标系,计算机组成,unity,游戏引擎1.需要注意的是:四元数的绕y轴旋转是绕物体本地坐标系的y轴旋转,而不是和欧拉角一样绕世界坐标系的y轴旋转unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

1.在实际开发中,到底是使用欧拉角还是使用四元数则是取决于具体的情况 --- 如果需求实现时不会出现万向节死锁就用欧拉角,如果会出现死锁的话就使用四元数

2.欧拉角和四元数可以互相转换 --- Unity提供了对应的转换方法 --- 在开发中视情况而定,是用欧拉角还是用四元数,或者是欧拉角转四元数再转欧拉角等等方法。unity 欧拉角 坐标系,计算机组成,unity,游戏引擎

1.四元数的运算法则分为两大类 --- 分别是四元数与四元数相乘(前面有讲,主要是旋转叠加)以及四元数与向量相乘,接下来讲解的就是四元数与向量相乘

而四元数与向量相乘又分为两大类 --- 分别是与向量左乘和右乘

PS:规定顺时针旋转角度为正,逆时针旋转角度为负

在Untiy中向量的起点都是世界坐标系的原点,而向量在进行加减乘除的操作之后得到的向量依然是起点为世界坐标系原点的向量文章来源地址https://www.toymoban.com/news/detail-792018.html

到了这里,关于Unity --- 三维数学 --- 欧拉角与四元数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】空间坐标系旋转与四元数

      最近在学惯性器件,想着先把理论知识脉络打通,于是便开始学习空间坐标系旋转和四元数,正好结合刚刚结课的课程《机器人控制技术》,记录一下学习心得。 旋转矩阵和齐次变换矩阵部分主要参考自教材 《机器人学导论》 中的第2章 【有需要的可以去z-library上免费

    2024年02月01日
    浏览(41)
  • Unity之四元数计算

    模拟飞机发射不同类型子弹的方法,单发,双发,扇形,环形 用3D数学知识实现摄像机跟随效果 1.摄像机在人物斜后方,通过角度控制倾斜率 2.通过鼠标滚轮控制摄像机距离人物的距离(有最大最小限制) 3.摄像机看向任务头顶上方的一个位置(可调节) 4.Vector3.Lerp实现相机

    2024年01月19日
    浏览(45)
  • Unity 四元数与物体旋转

    由三个角度(x,y,z)组成 在特定坐标系下用于描述物体的旋转量 空间中的任意旋转都可以分解成绕三个互相垂直轴的三个旋转角组成的序列 欧拉角旋转约定——heading-pitch-bank 这是一种最常用的旋转序列约定——Y-X-Z约定 heading:物体绕自身的对象坐标系的Y轴旋转的角度 pitch:物体

    2024年01月18日
    浏览(58)
  • Unity --- quaternion(四元数)类API

    1.欧拉角转四元数 --- 调用方法 ; 四元数转欧拉角 --- 调用属性  2.上面这个方法是绕给定轴/角进行旋转  1.第三个方法 --- LookRotation() --- 该方法需要一个Vector3类对象(以向量的形式)作为参数 --- 该方法会返回一个四元数 ,返回的这个新的四元数能够使物体自身坐标系的Z轴

    2023年04月09日
    浏览(39)
  • 欧拉角,轴角,四元数与旋转矩阵详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、欧拉角 1、静态定义 2、欧拉角的表示  3、欧拉角表示的优缺点  4、欧拉角的万向节死锁(静态不存在万向锁的问题) 二、四元数 1、提出意义和定

    2024年01月17日
    浏览(46)
  • 四元数,旋转矩阵,欧拉角互转(python)

    运行代码之前需要安装pyquaternion和scipy。 pip install pyquaternion pip install scipy 代码之前放下面,main函数有使用的方式

    2024年02月12日
    浏览(45)
  • 四元数,欧拉角和旋转矩阵相互转换

    打印输出: 在线转换网站:1、三维在线旋转变换网站 https://www.andre-gaschler.com/rotationconverter/ 2、 Rotation Conversion Tool https://danceswithcode.net/engineeringnotes/quaternions/conversion_tool.html 3、角度、弧度在线转换工具 https://www.osgeo.cn/app/sc210 参考链接:https://www.jianshu.com/p/4fda4c34b829 https://

    2024年02月14日
    浏览(43)
  • 【Eigen库使用】角轴、旋转矩阵、欧拉角、四元数转换

    在slam中经常用到的四种描述机器人orientation的变量,他们之间可以相互转化,使用Eigen库可以很容易的做到这一点, 需要特别关注的是:欧拉角与其余量之间的转换关系 : 1)首先要明确的是, 必须要明确欧拉角的旋转次序 ,你可以选择RPY、YPR等方式,在相同的orientation下,

    2024年01月18日
    浏览(50)
  • 坐标系变换推导(欧拉角、方向余弦矩阵、四元数)+代码解析

    描述两个坐标系之间的变换关系主要有几个方法 1、欧拉角法(存在奇异性和万向锁而且三个轴旋转的顺序不好定) 2、方向余弦矩阵法(翻译为Directional cosine matrix,简称DCM,也称为旋转矩阵,看了很多博客写的是C11-C33的那个矩阵,没明白为什么也称之为一个方法,有知道的指导

    2024年02月08日
    浏览(94)
  • 欧拉角,四元数和旋转矩阵互转代码【python版】

    欧拉角以 Roll、Pitch、Yaw 的顺序表示 四元数以[ q w q_w q w ​ , q x q_x q x ​ , q y q_y q y ​ , q z q_z q z ​ ]的顺序表示 代码包括了 欧拉角与四元数互转 , 旋转矩阵与四元数互转 , 欧拉角与旋转矩阵互转 ,输入参数均为 np.array 形式 代码内置了角度制和弧度制😃😃 当时因为这块

    2023年04月22日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包