四元数

public class Quaternion

适用于浮点数的 Sceneform 四元数类。

四元运算采用右手规则惯例。

字段

公开浮点数
公开浮点数 x
公开浮点数
公开浮点数 Z

公共构造函数

四元数()
构建四元数并设置为 Identity
四元数(浮点数 x、浮点数 y、浮点数 z、浮点数 w)
构造四元数并设置每个值。
四元数(四元数 q)
使用来自其他 Quaternion 的值构造 Quaternion
四元数Vector3 轴,浮点数)
使用轴/角度构建四元数来定义旋转
四元数 (Vector3 eulerAngles)
基于 eulerAngles 构建四元数。

公共方法

static Quaternion
axisAngle(Vector3 轴, 浮点度)
获取使用轴/角度定义旋转的新四元数
静态布尔值
equals(Quaternion lhs, Quaternion rhs)
比较两个四元数

通过计算 lhs 和 rh 的点积来测试是否相等。

布尔值
等于其他对象)
如果另一个对象是四元数,并且点积为 1.0 +/- 公差,则返回 true。
static Quaternion
eulerAngles(Vector3 eulerAngles)
使用 eulerAngles 定义旋转的新 Quaternion。
static Quaternion
identity()
将 Quaternion 设置为身份
static Vector3
四元数
反转()
获取反转的四元数
static Quaternion
lookRotationVector3forwardInWorld、Vector3 requiredUpInWorld)
获取代表指定向前方向旋转的新四元数。
static Quaternion
multiply(Quaternion lhs, Quaternion rhs)
通过将两个 Quaternion 乘数(lhs, rhs) 组合起来相当于执行 rhs 旋转,以创建 Quaternion,然后 lhs 旋转对此操作很重要。
布尔值
标准化()
将四元数重新缩放为单位长度。
四元数
标准化()
获取一个具有匹配旋转但根据单位长度缩放的四元数。
static Vector3
rotateVector(Quaternion q, Vector3 src)
使用四元数旋转 Vector3
static Quaternion
rotationbetweenVectorsVector3 开始、Vector3 结束)
获取表示从一个矢量旋转到另一个矢量的新四元数。
无效
set(float qx, float qy, float qz, float qw)
设置每个值并使四元数归一化
无效
setVector3 轴,浮点数)
更新此四元数,使用轴/角度定义旋转
无效
set(四元数 q)
将另一四元数中的值复制到此元数中
无效
setIdentity()
将四元数设为身份
static Quaternion
slerp(Quaternion start, Quaternion end, float t)
字符串
toString

继承的方法

字段

公开 浮点数 w

公开浮点数 x

公开浮点数 y

公开浮点数 z

公共构造函数

public 四元数 ()

构建四元数并设置为 Identity

public 四元数 (float x, float y, float z, float w)

构造四元数并设置每个值。四元数会在构造过程中进行归一化

参数
x
y
z
w

public Quaternion (Quaternion q)

使用来自其他 Quaternion 的值构造 Quaternion

参数
q

public 四元数 Vector3 轴,浮点数)

使用轴/角度构建四元数来定义旋转

参数
Axis 设置旋转方向
角度大小(以度为单位)

public Quaternion (Vector3 eulerAngles)

基于 eulerAngles 构建四元数。

参数
欧洲角 - 每个轴的角度(以度为单位)。
另请参阅

公共方法

public static Quaternion axisAngle (Vector3 轴,浮点数)

获取使用轴/角度定义旋转的新四元数

参数
Axis 设置旋转方向
度数 角度大小(以度为单位)

public static boolean equals (Quaternion lhs, Quaternion rhs)

比较两个四元数

通过计算 lhs 和 rhs 的点积来测试是否相等。根据此函数计算,lhs 和 -lhs 不相等。

参数
lhs
RHS

public boolean equals (Object other)

如果另一个对象是四元数,并且点积为 1.0 +/- 公差,则返回 true。

参数
其他

public static Quaternion eulerAngles (Vector3 eulerAngles)

使用 eulerAngles 定义旋转的新 Quaternion。

按 Z、Y、X 的顺序应用旋转。这与其他图形引擎一致。 有一点需要注意的是,Sceneform 与 Unity 之间的坐标系不同,因此此处使用的角度会导致与 Unity 不同的屏幕方向。请仔细检查参数值,以与其他引擎中的效果相同。

参数
欧洲角 - 角度(以度为单位)。

public static Quaternion identity ()

将 Quaternion 设置为身份

public static Vector3 inverseRotateVector (Quaternion q, Vector3 src)

参数
q
src

public 四元数 反转 ()

获取反转的四元数

返回
  • 相反的旋转

public static Quaternion lookRotation(Vector3forwardInWorld、Vector3requiredUpInWorld)

获取代表指定向前方向旋转的新四元数。如果 upInWorld 与 forwardingInWorld 正交,则 Y 轴与 requiredUpInWorld 对齐。

参数
向前世界
向上的世界

public static Quaternion multiply (Quaternion lhs, Quaternion rhs)

通过将两个 Quaternion 乘数(lhs, rhs) 组合起来相当于执行 rhs 旋转,以创建 Quaternion,然后 lhs 旋转对此操作很重要。

参数
lhs
RHS
返回
  • 合并轮播

public boolean normalization ()

将四元数重新缩放为单位长度。

如果 Quaternion 无法缩放,系统会将其设为 identity 并返回 false。

返回
  • 如果四元数非零,则为 true

public Quaternion 标准化 ()

获取一个具有匹配旋转但根据单位长度缩放的四元数。

返回
  • 四元数缩放到单位长度;如果无法做到,则可为零。

public static Vector3 rotateVector (Quaternion q, Vector3 src)

使用四元数旋转 Vector3

参数
q
src
返回
  • 旋转矢量

public static Quaternion rotationbetweenVectors (Vector3 start, Vector3 end)

获取表示从一个矢量旋转到另一个矢量的新四元数。

参数
start
end

public void set (float qx, float qy, float qz, float qw)

设置每个值并使四元数归一化

参数
季度
季度
QQ
季度

public void set (Vector3 axis, float angle)

更新此四元数,使用轴/角度定义旋转

参数
Axis

public void set (Quaternion q)

将另一四元数中的值复制到此元数中

参数
q

public void setIdentity ()

将四元数设为身份

public static Quaternion slerp (Quaternion start, Quaternion end, float t)

参数
start
end
t

public String toString ()