Quaternion类

article/2025/10/31 2:48:25

Euler

public static Quaternion Euler(float x, float y, float z);
public static Quaternion Euler(Vector3 euler);

功能: 返回Quaternion对应的欧拉角
例子:
public class ExampleClass : MonoBehaviour {public Quaternion rotation = Quaternion.Euler(0, 30, 0);
}public class ExampleClass : MonoBehaviour {public Quaternion rotation = Quaternion.Euler(new Vector3(0, 30, 0));
}


ToAngleAxis 返回物体的旋转角度信息

public void ToAngleAxis(out float angle, out Vector3 axis);
参数: angle 旋转的角度
axis 旋转轴,不一定是x,y,z轴

AngleAxis 创建围绕轴旋转某个角度的四元数

public static Quaternion AngleAxis(float angle, Vector3 axis);
参数: angle 旋转的角度
axis 旋转轴,不一定是x,y,z轴

例子:
如果我们想使a,b两物体的旋转一样,可以这么做
public class ToAngleAxis : MonoBehaviour {// Use this for initializationprivate float angle = 0.0F;private Vector3 axis = Vector3.zero;public GameObject a;public GameObject b;void Start () {a.transform.rotation.ToAngleAxis(out angle, out axis);b.transform.rotation = Quaternion.AngleAxis(angle, axis);}
}

SetLookRotation 设置Quaternion实例的朝向

public void SetLookRotation(Vector3 view, Vector3 up = Vector3.up)
参数: view 朝向的向量
up 向上的方向

例子:我们使一个物体朝向另一个物体
代码:
public class SetLookRotation: MonoBehaviour {public Transform target;void Start() {Vector3 relativePos = target.position - transform.position;Quaternion rotation = Quaternion.identity;rotation.SetLookRotation(relativePos,transform.up);transform.rotation = rotation;}
}

LookRotation 设置Quaternion实例的朝向

public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
参数: forward 朝向的向量
up 向上的方向

public class LookRotation : MonoBehaviour {public Transform target;void Start() {Vector3 relativePos = target.position - transform.position;Quaternion rotation = Quaternion.LookRotation(relativePos);transform.rotation = rotation;}
}

效果



SetFromToRotation

public void SetFromToRotation(Vector3 fromDirection, Vector3 toDirection);
功能: 用于创建从fromDirection到toDirection的rotation。设有以下代码:
Quaternion q1 = Quaternion.identity;
q1.SetFromToRotation(v1,v2);
transform.rotation = q1;
则相当于将GameObject对象进行如下变换: 首先将GameObject对象自身坐标系的x,y,z轴方向
和世界坐标系的x,y,z轴方向一致, 然后将GameObject对象自身坐标系中向量v1指向的方向旋转到v2方向。



FromToRotation

和 SetFromToRotation功能一样,只是用法不一样


Lerp 线性插值

public static Quaternion Lerp(Quaternion a, Quaternion b, float t);

功能:返回从a到b的线性插值,该方法速度比Slerp快
例子:
我们创建两个Cube,使其中一个Cube的朝向(z轴方向)指向另一个Cube
代码:
public class t_Quaternion_Slerp : MonoBehaviour {public Transform to;public float speed = 0.1F;Vector3 targetVector;Quaternion targetQuaternion = Quaternion.identity;void Start() {targetVector = to.position - transform.position;targetQuaternion = Quaternion.LookRotation(targetVector);}void Update(){transform.rotation = Quaternion.Lerp(transform.rotation, targetQuaternion,Time.deltaTime);}
}

效果:


Slerp 球面插值

public static Quaternion Slerp(Quaternion a, Quaternion b, float t);

功能:返回从a到b的球面插值

http://chatgpt.dhexx.cn/article/YPlS5mfO.shtml

相关文章

Unity Quaternion

Quaternion 类的属性 eulerAngles 欧拉角 Quaternion 类的实例方法 1、SetFromToRotion 函数 2、SetLookRotation 函数 3、ToAngleAxis 函数 Quaternion 类的静态方法 1、Angle方法 2、Dot方法 3、Euler方法 4、FromToRotation方法 5、Inverse方法 6、Lerp方法 7…

【第018问 Unity中对Quaternion.AngleAxis的理解?】

一、背景 在游戏研发过程中,有时候会对一个物体经过多次围绕不同的轴进行不同角度的旋转,从而计算得到一个方向,以此来检测在该对应的方向上是否有对应的物体或别的对象,因此本节对Quaternion.AngleAxis进行简单的记录&#xff1…

Unity API详解——Quaternion类

Quaternion类又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂,对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现…

Unity3D - 详解Quaternion类[转载]

一、简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉卢云哈密顿在1843年发现的数学概念。四元数的乘法不符合交换律。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话&…

【Unity】Unity常用类:向量Vector3、四元数Quaternion

文章目录 Vector3构造函数静态变量变量运算符常用方法(静态)OrthoNormalize(正交标准化)Reflect(反射)Lerp(线性插值) Quaternion构造函数静态变量变量常用方法Eular(欧拉…

unity学习笔记——Quaternion(四元数)

本篇文章转自https://www.cnblogs.com/driftingclouds/p/6626183.html Quaternion类 Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表…

【Unity编程】Unity中关于四元数的API详解

Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表示所有的旋转。 Quaternion是基于复数&am…

四元数快速入门【Quaternion】

四元数(Quaternion)是用于旋转和拉伸向量的数学运算符。 本文提供了一个概述,以帮助理解在空间导航等应用程序中对四元数的需求。 推荐:用 NSDT场景设计器 快速搭建3D场景。 可以通过多种方式在空间中准确定位、移动和旋转物体。 …

四元数(Quaternion)食用指南

四元数(Quaternion)食用指南 “这简直就是黑魔法!” 开发时,每次遇到旋转问题时总会心头一震,在欧拉角和四元数这两种处理方式的选择上犹豫不决,不知不觉就陷入了四元数的淤泥中…接下来,我决定…

Unity3D - 详解Quaternion类

一、简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉卢云哈密顿在1843年发现的数学概念。四元数的乘法不符合交换律。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话&…

int 的最大值

int 的最大值 java int 类整数的最大值是 2 的 31 次方 - 1 2147483648 - 1 2147483647 可以用 Integer.MAX_VALUE 表示它,即 int value Integer.MAX_VALUE; Integer.MAX_VALUE 1 Integer.MIN_VALUE -2147483648 再大的数就要用 long (最大值 …

Python获取int最大值和float最大值

计算机所能表示的最大值,根据你的计算机的位数决定。有机计算机是64位,有的是32位,因此具体情况各不相同。本人的电脑是64位的。 1.获得int型的最大值 import sys MAX_INTsys.maxsize print(MAX_INT)2.获得float型的最大值 ##灰常简单 max…

C语言数据类型 int、long int 最大值

一、注意:前提是32位计算机: unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295 long -2147483648~2147483647 long long的最大值:9223372036854775807 long …

C++-int最大值

uint范围 0-255 int范围 -128 - 127 -2147483647 原码1111 1111 1111 1111 1111 1111 1111 1111-2147483647-1-2147483648;由于cpu里面存的是补码计算-2147483647  补码1000 0000 0000 0000 0000 0000 0000 0001-1       补码1111 1111 1111 1111 1111 1111 1111 11…

c语言求int的最大值最小值,c语言 int最大值是多少?

喵喔喔 int最大值,根据编译器类型不同而变化,具体如下:1、对于16位编译器,int占16位(2字节)。int的最大值为32767.2、对于32位和64位编译器,int占32位(4字节)。int的最大值为21474836473、可以通过打印sizeof(int)查看…

C语言|int型最大值和最小值

一.int型的最值 有符号 最小值:-2147483647-1最大值:2147483647 无符号 最大值:0xffffffff最小值:0 大家可以在整形类型的取值范围限制头文件中查看:limits.h 二.int型最小值的原因 当我们直接给int型变量赋-214748364…

软件测试管理神器之zentao(禅道)-BUG管理

软件测试管理神器之zentao(禅道)-BUG管理 禅道在遵循其管理方式基础上,结合国内研发现状,整合了bug管理,测试用例管理,发布管理,文档管理等功能,完整的覆盖了软件研发项目的整个生命周期。在禅道软件中&…

软件测试Bug

bug组成 缺陷编号-测试管理系统自动生成缺陷标题->用简短精确的话语来描述你的bug缺陷类型--代码错误(功能--预期结果--Bug/未做功能---bG)/设计缺陷(需求不全面,考虑的场景遗漏)/界面优化(U-—致,去检查ui)缺陷等级-->致命(系统瘫痪、环境出错、无法进入下一步测试)/严…

禅道—禅道Bug管理模块

禅道官网:https://www.zentao.net/ 简介: 开源免费的项目管理软件、集产品管理、项目管理、测试管理一体以及事物管理组织管理的功能 使用原因: 开源 方便跟踪管理Bug使用简单易学及多种管理于一身 1、Bug操作流程 2、Bug的几种解决方案 …

软件测试bug文章,软件测试技术之说一个让你印象最深的bug?

本篇文章主要讲述软件测试技术之说一个让你印象最深的bug?,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。 今天来聊一下测试面试必问题目:说一个让你印象最深的bug? 被问到这个问题,如果面试者之前没有总结和准备过,会一下子被问懵逼,瞬间紧张…